Todo el mundo conoce la secuencia de Fibonacci: se
toma un cuadrado, se le asigna un cuadrado igual y luego se une repetidamente un cuadrado cuya longitud lateral es igual a la longitud lateral más grande del rectángulo resultante.
El resultado es una hermosa espiral de cuadrados cuya secuencia de números es la secuencia de Fibonacci :
Pero, ¿y si no quisiéramos usar cuadrados?
Si utilizamos triángulos equiláteros, en lugar de cuadrados, de manera similar, obtenemos una espiral igualmente hermosa de triángulos y una nueva secuencia: la secuencia de Padovan , también conocida como A000931 :
Tarea:
Dado un número entero positivo, , salida , la º término en la secuencia de Padovan o los primeros términos.
Suponga que los primeros tres términos de la secuencia son todos . Por lo tanto, la secuencia comenzará de la siguiente manera:
Entrada:
Cualquier número entero positivo
La entrada inválida no tiene que ser tomada en cuenta
Salida:
El º término en la secuencia de Padovan OR los primeros términos de la secuencia de Padovan.N
Si se imprimen los primeros términos, la salida puede ser lo que sea conveniente (lista / matriz, cadena de varias líneas, etc.)
Puede ser indexado o indexado
Casos de prueba:
(0 indexados, º plazo)
Input | Output
--------------
0 | 1
1 | 1
2 | 1
4 | 2
6 | 4
14 | 37
20 | 200
33 | 7739
(1 indexado, primeros términos)
Input | Output
--------------
1 | 1
3 | 1,1,1
4 | 1,1,1,2
7 | 1,1,1,2,2,3,4
10 | 1,1,1,2,2,3,4,5,7,9
12 | 1,1,1,2,2,3,4,5,7,9,12,16
Reglas:
Este es el código de golf : ¡cuantos menos bytes, mejor!
Las lagunas estándar están prohibidas.
14
(Índice 0) se muestra como salida28
mientras creo que debería ceder37
a_0=1, a_1=0, a_2=0
. Termina siendo desplazado un poco porque entoncesa_5=a_6=a_7=1
Respuestas:
Jalea , 10 bytes
Pruébalo en línea!
1 indexado. Calcula el elemento más grande de: donde la matriz binaria se calcula convenientemente como:⎡⎣⎢0 010 00 00 01110 0⎤⎦⎥norte ⎡⎣⎢isprime(0)isprime(3)isprime(6)isprime(1)isprime(4)isprime(7)isprime(2)isprime(5)isprime(8)⎤⎦⎥
(Esto es una coincidencia total).
fuente
Oasis , 5 bytes
enésimo término indexado 0
Pruébalo en línea!
Explicación
fuente
Jalea ,
10 98 bytesUn enlace monádico que acepta
n
(indexado a 0) que produceP(n)
.Pruébalo en línea!
¿Cómo?
ImplementaP(n)=∑⌊n2⌋i=0(i+1n−2i)
Y aquí hay un "twofer"
... un método totalmente diferente también para 8 bytes (este es 1 indexado, pero mucho más lento):
fuente
Haskell , 26 bytes
Pruébalo en línea! Emite el enésimo término indexado a cero.
Pensé que la solución recursiva "obvia" a continuación sería inmejorable, pero entonces encontré esto. Es similar a la expresión clásica de golf
l=1:scanl(+)1l
para la lista infinita de Fibonacci, pero aquí la diferencia entre los elementos adyacentes es el término 4 posiciones atrás. Podemos escribir más directamentel=1:1:zipWith(+)l(0:l)
, pero eso es más largo.Si este desafío permitiera una salida de lista infinita, podríamos cortar la primera línea y tener 20 bytes.
27 bytes
Pruébalo en línea!
fuente
Python 2 , 30 bytes
Pruébalo en línea!
Devuelve el enésimo término cero indexado. Salidas
True
para 1.fuente
Wolfram Language (Mathematica) , 33 bytes
1 indexado, devuelve el enésimo término
Pruébalo en línea!
fuente
Octava / MATLAB,
3533 bytesEmite los primeros n términos.
Pruébalo en línea!
Cómo funciona
Función anónima que implementa un filtro recursivo .
'cbaa'-98
Es una forma más corta de producir[1 0 -1 -1]
.2:n<5
es una forma más corta de producir[1 1 1 0 0 ··· 0]
( n −1 términos).filter(1,[1 0 -1 -1],[1 1 1 0 0 ··· 0])
pasa la entrada a[1 1 1 0 0 ··· 0]
través de un filtro de tiempo discreto definido por una función de transferencia con coeficientes de numerador1
y coeficientes de denominador[1 0 -1 -1]
.fuente
J , 22 bytes
-2 bytes gracias a ngn y Galen
forma cerrada, 26 bytes
Pruébalo en línea!
iterativo, 22 bytes
Pruébalo en línea!
fuente
1:
->#
: ¡ Pruébelo en línea!1:
->1
. "adverso" funciona con un sustantivo a la derecha, aparentementeRetina ,
4742 bytesPruébalo en línea! Emite los primeros
n
términos en líneas separadas. Explicación:Vuelva a colocar la entrada con los términos de
-2
,-1
y0
.Genere los siguientes
n
términos usando la relación de recurrencia.*_
aquí es corto para lo$&*_
que convierte el (primer) número en el partido en unario, mientras que$1*
es corto para lo$1*_
que convierte el número del medio en unario. Los$.(
devuelve la suma decimal de sus argumentos unarios, es decir, la suma de los primer y segundo números.Deseche los primeros seis caracteres, es decir, las primeras tres líneas.
fuente
Cubix , 20 bytes
Este es 0 indexado y da salida a la N º plazo
Pruébalo en línea!
Se envuelve en un cubo con longitud lateral 2
Míralo correr
I010
- Inicia la pila+p?
- Agrega la parte superior de la pila, tira del contador desde la parte inferior de la pila y prueba/;UO@
- Si el contador es 0, reflexionar sobre la cara superior, eliminar TOS, giro en U, salida y detener\(sqq;W
- Si el contador es positivo, refleje, disminuya el contador, cambie los TOS, presione de arriba a abajo dos veces, quite los TOS y cambie el carril nuevamente al bucle principal.fuente
Python 2 ,
5648 bytesPruébalo en línea!
Devuelve el enésimo valor, 0 indexado.
fuente
Perl 6 , 24 bytes
Pruébalo en línea!
Una secuencia generada bastante estándar, con cada nuevo elemento generado por la expresión
* + * + !*
. Eso agrega el tercer elemento anterior, el segundo elemento anterior y la negación lógica del elemento anterior, que siempre esFalse
, que es numéricamente cero.fuente
05AB1E , 8 bytes
Pruébalo en línea!
Ten paciencia conmigo, no he jugado al golf en mucho tiempo. Me pregunto si hay un sustituto más corto para eln
1Ð)
que funciona en este caso (lo he intentado1D)
,3Å1
etc. pero ninguno de ellos guarda bytes). Emite los primeros términos de la secuencia. O, sin el , generaría un flujo infinito de los términos de la secuencia.£
¿Cómo?
fuente
1Ð)
puedan ser 2 bytes tbh. Puedo pensar en seis alternativas diferentes de 3 bytes , pero no en 2 bytes.APL (Dyalog Unicode) , SBCS
201817 bytesEste código tiene 1 índice. Es el mismo número de bytes para obtener
n
elementos de la secuencia de Padovan, ya que debe eliminar los últimos miembros adicionales. También es el mismo número de bytes para obtener la indexación 0.Editar: -2 bytes gracias a ngn. -1 byte gracias a ngn
Pruébalo en línea!
Explicación
fuente
K (ngn / k) ,
2420 bytes-4 bytes gracias a ngn!
Pruébalo en línea!
Indexados a 0, primeros N términos
fuente
f[x-2]+f[x-3]
->+/o'x-2 3
(o
es "recur")1:
->#
en la solución jCódigo de máquina x86 de 32 bits, 17 bytes
Desmontaje
Está indexado a 0. La inicialización se logra convenientemente calculando eax * 0. El resultado de 128 bits es 0, y va en edx: eax.
Al comienzo de cada iteración, el orden de los registros es ebx, eax, edx. Tuve que elegir el orden correcto para aprovechar la codificación de la
xchg eax
instrucción: 1 byte.Tuve que agregar 4 al contador de bucle para permitir que la salida alcance
eax
, que contiene el valor de retorno de la función en lafastcall
convención.Podría usar alguna otra convención de llamadas, que no requiere guardar y restaurar
ebx
, pero defastcall
todos modos es divertido :)fuente
Jalea , 11 bytes
Pruébalo en línea!
0 indexado.
fuente
Lua 5.3,
4948 bytesPruébalo en línea!
Vanilla Lua no tiene coerción de booleanos a cadenas (incluso
tonumber(true)
retornosnil
), por lo que debe usar un operador pseudoternario. Esta versión está indexada en 1, como todos los de Lua. La1or
parte debe cambiarse1 or
en Lua 5.1, que tiene una forma diferente de lexing números.fuente
Rubí , 26 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 23 bytes
Pruébalo en línea!
fuente
true
es lo mismo que regresar1
si el resto de la salida son números.Japt
-N
, 12 bytesIntentalo
fuente
TI-BASIC (TI-84), 34 bytes
La entrada está adentro
Ans
.La salida está adentro
Ans
y se imprime automáticamente.Supuse que había pasado suficiente tiempo, además de que se habían publicado varias respuestas, de las cuales había muchas que superaron esta respuesta.Ejemplo:
Explicación:
fuente
Pyth, 16 bytes
Esto define la función
y
. Pruébalo aquí!Aquí hay una solución más divertida, aunque es 9 bytes más larga; Sin embargo, los bytes pueden ser afeitados.
Utiliza la definición dada por David Callan en la página OEIS: "a (n) = número de composiciones de n en partes que son impares y> = 3." Pruébalo aquí! Toma entrada directamente en lugar de definir una función.
fuente
y-b2y-b3
tal vez podría ser refactorizado con bifurcado oL
? Aunque declarar una matriz de 2 elementos es costoso.yL-Lb2,3
es más largo :(+y-b2y-b3
consmy-bdhB2
cuál es la misma cantidad de bytes;hB2
resultados en la matriz[2, 3]
hB2
. Lástima que sea el mismo número de bytes.d
en el mapa.Java, 41 bytes
No se puede usar una lambda (error de tiempo de ejecución). Puerto de esta respuesta Javascript
TIO
fuente
R + pryr ,
3836 bytesFunción recursiva indexada a cero.
Pruébalo en línea!
Gracias a @Giuseppe por señalar dos bytes obviamente innecesarios.
fuente
pryr
, el idioma debe serR + pryr
y esto puede ser 36 bytesC (clang) ,
4133 bytesPruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 34 bytes
Pruébalo en línea!
fuente
Perl 5 , 34 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 26 bytes
Pruébalo en línea!
fuente
Pari / GP , 28 bytes
0 indexado.
Pruébalo en línea!
Pari / GP , 35 bytes
1 indexado.
Pruébalo en línea!
fuente