DEV Community

La secuencia de los Padawan

Hoy me enteré de la existencia de la sucesión de Padovan, que se define como sigue:

p[0] = 1
p[1] = 1
p[2] = 1
p[n] = p[n - 2] + p[n - 3]
Enter fullscreen mode Exit fullscreen mode

Se parece mucho a la sucesión de Fibonacci, aunque desplazada. El último elemento es ignorado, solo para retomarlo en el cálculo del siguiente elemento.

¿Cómo sería la sucesión de Padovan en Python?

def padovan_seq(n: int) -> list[int]:
    toret = []

    if n > 0:
        match n:
            case 0:
                toret = [1]
            case 1:
                toret = [1, 1]
            case 2:
                toret = [1, 1, 1]
            case _:
                toret = padovan_seq(n - 1)
                toret += [toret[-2] + toret[-3]]
    ...

    return toret
...


if __name__ == "__main__":
    print("Sucesión de Padovan")
    print(str.join(", ", (str(x) for x in padovan_seq(100))))
...
Enter fullscreen mode Exit fullscreen mode

La salida es la siguiente:

Sucesión de Padovan
1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, 465, 616, 816, 1081, 1432, 1897, 2513, 3329, 4410, 5842, 7739, 10252, 13581, 17991, 23833, 31572, 41824, 55405, 73396, 97229, 128801, 170625, 226030, 299426, 396655, 525456, 696081, 922111, 1221537, 1618192, 2143648, ...
Enter fullscreen mode Exit fullscreen mode

Oh, bueno, y ¿qué pasa con el título? ¿Qué tiene que ver un Padawan de Star Wars con todo esto? Directamente nada. Solo es clickbait, me temo.

Ya, yo es que soy así.

Top comments (0)