Hice mi propia secuencia recientemente (llamada secuencia Piggyback), y funciona así:
P(1)
, P(2)
Y P(3)
= 1
.
Para todos los P(n)
lugares n>3
, la secuencia funciona así:
P(n) = P(n-3) + P(n-2)/P(n-1)
Entonces, continuando la secuencia:
P(4)
= 1 + 1/1
=2
P(5)
= 1 + 1/2
= 3/2
=1.5
P(6)
= 1 + 2/(3/2)
= 7/3
=2.33333...
P(7)
= 2 + (3/2)/(7/3)
= 37/14
=2.6428571428...
P(8)
= 3/2 + (7/3)/(37/14)
= 529/222
=2.3828828828...
Su tarea es, cuando se le da n
, calcular P(n)
como un número de coma flotante o como una fracción (im) adecuada.
Este es el código de golf , por lo que gana el código más corto en bytes.
Si alguien puede encontrar el nombre de la secuencia, edite la publicación en consecuencia.
P(0)=1
...Respuestas:
Python 2,
4039 bytes.Da en
True
lugar de 1, si esto no está permitido, podemos tener esto para 42 bytes:La forma en que funciona es bastante sencilla, el único truco es usar
.0+
para lanzar el resultado a un flotador.fuente
x<4
yor
f(x-1.)
para lanzar para flotar. En Python 3, no necesitas lanzar nada.Haskel, 32 bytes
Ejemplo de uso:
((0#1)1!!) 7
->2.642857142857143
. Comienzo la secuencia con0, 1, 1
para arreglar!!
la indexación basada en 0.Editar: @xnor encontró una manera de cambiar del índice basado en 0 a 1, sin cambiar el recuento de bytes.
fuente
(0,1,1)
.Ruby, 34 bytes
Como Ruby usa la división entera por defecto, resulta que es más corto usar fracciones en su lugar. Sugerencias de golf bienvenidas.
fuente
Perl 6 ,
2523 bytesExplicación:
Esto devuelve una Rata ( Racional ) para las entradas que comienzan con 3 hasta que el resultado comience a tener un denominador más grande que el que puede caber en un entero de 64 bits, en cuyo punto comienza a devolver Num s (punto flotante).
La última rata que devolverá es
P(11) == 8832072277617 / 2586200337022
Si desea que devuelva números racionales en lugar de flotantes, puede cambiarlo por el siguiente, que en su lugar devolverá un FatRat .
Prueba:
fuente
C, 46 bytes
Ideona
fuente
MATL , 15 bytes
Pruébalo en línea!
Explicación
fuente
Cheddar , 31 bytes
La versión sin golf es tan clara que no necesitas explicación:
básicamente, después de los argumentos de la función, puede especificar la variable a utilizar que se establecerá en la función misma. ¿Por qué? porque esta función será optimizada para cola, o al menos debería serlo.
fuente
Javascript (ES6), 31 bytes
Una función simple
fuente
P=n=>n<4?1:P(n-3)+P(n-2)/P(n-1)
function
. El bitP=n=>[...]
está creando una función anónima que toma 1 parámetro (n). Además, en ES6, los retornos son implícitos. Entonces,P=n=>5
es una función que siempre regresa5
. Solo necesita encerrar el cuerpo{}
si tiene más de una declaración (EjP=n=>{alert(1);console.log(1)}
. :) . Como solo tiene 1 instrucción (grande) (el operador ternario), puede olvidar la{}
.05AB1E ,
1817 bytesPruébalo en línea!
Guardado 1 byte gracias a Luis Mendo
fuente
Pyth, 20 bytes
Pruébalo en línea!
fuente
Jalea , 15 bytes
Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
R,
5347 bytesEsta respuesta hizo uso de la bonita función
ifelse
:ifelse(Condition, WhatToDoIfTrue, WhatToDoIfNot)
fuente
return()
en su código. Pero también debe nombrar la función para que su recursión funcioneMathematica, 36 bytes
Aquí están los primeros términos:
fuente
Dyalog APL, 25 bytes
⊃{1↓⍵,⍎⍕' +÷',¨⍵}⍣⎕⊢0 1 1
fuente