Definición
- a (1) = 1
- a (2) = 1
- a (n) = a (na (n-1)) + a (na (n-2)) para n> 2 donde n es un número entero
Tarea
Dado entero positivo n
, generar a(n)
.
Casos de prueba
n a(n)
1 1
2 1
3 2
4 3
5 3
6 4
7 5
8 5
9 6
10 6
11 6
12 8
13 8
14 8
15 10
16 9
17 10
18 11
19 11
20 12
Referencia
- Obligatorio OEIS A005185
code-golf
sequence
arithmetic
Monja permeable
fuente
fuente
Respuestas:
Retina ,
84837974 bytesEl recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea! (La primera línea habilita un conjunto de pruebas separado por salto de línea).
Tendré que jugar al golf un poco más tarde.
fuente
Haskell,
3533 bytesDefine una función
a
.fuente
(b.b)1+(b.b)2
más corto que la suma?Julia, 29 bytes
Pruébalo en línea!
Cómo funciona
Redefinimos el operador unario
!
para nuestros fines.Si n es 1 o 2 ,
n<3
devuelve verdadero y este es nuestro valor de retorno.Si n es mayor que 2 ,
n<3
devuelve falso y el || la rama se ejecuta. Esta es una implementación directa de la definición, donde~-n
produce n - 1 y~-~-n
produce n - 2 .fuente
Sesos, 54 bytes
Pruébalo en línea
Desmontado
O en notación Brainfuck:
fuente
C,
4342 bytesGuardado 1 byte gracias a @Dennis
Cada respuesta es la misma, ¡debo hacer algo diferente!
Pruébalo en línea!
Explicación: es básicamente
a(n-a(n-2))+a(n-a(n-1))
pero con un comportamiento indefinido e impreciso (funciona en mi teléfono (gcc) e ideone).fuente
1
entre?
y:
.$b+=$b[$_-$b[$_-2]]+$b[$_---$b[$_]]
Mathematica, 36 bytes
El recuento de bytes asume la codificación ISO 8859-1 y la
$CharacterEncoding
configuración de Mathematica enWindowsANSI
(el valor predeterminado en Windows; otras configuraciones también podrían funcionar, pero algunas comoUTF-8
definitivamente no).Define
±
como operador unario.Intenté deshacerme de la duplicación, pero terminé con el mismo número de bytes:
fuente
Jalea ,
1514 bytesPruébalo en línea! o verificar todos los casos de prueba (toma unos segundos).
Cómo funciona
fuente
Jalea ,
141211 bytesEste es un enfoque iterativo.
Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
Python,
4540 bytesInterpretación simple e ingenua del desafío.
¡Guardado 5 bytes gracias a @LeakyNun!
fuente
Haskell,
3937 bytesexactamente como se describe en el desafío, usando guardias
fuente
n<3
parah 2
ser1
.R, 50 bytes
Uso:
fuente
CJam,
1918 bytesPruébalo en línea!
Utiliza el enfoque iterativo.
fuente
C #,
5144 bytesMepregunto si esto puede acortarse haciéndolo anónimogracias pinkfloydx33!fuente
int a(int n)=>n<3?1:a(n-a(n-a))+a(n-a(n-2));
-a
en el primer grupo de padres debería ser-1
JavaScript (ES6),
45 bytes34 bytesUna solución recursiva en ES6. Cualquier consejo de golf muy apreciado.
Gracias a / u / ismillo por acortar aún más.
fuente
Golfscript, 29 bytes
Pruébalo en línea!
fuente
05AB1E, 29 bytes
Una solución iterativa.
Pruébalo en línea
fuente
APL, 20 bytes
Explicación:
fuente
VBA Excel 87 bytes
No recursivo, ya que quiero que esto funcione para n = 100000, diga:
... y presione
return
(byte # 87) al final de la línea para obtener laEnd Function
declaración "gratis". Tenga en cuenta que los valores B se compensan con -1 para evitar la inicialización de n = 1 y 2.Invocar en la hoja de cálculo de forma normal, por ejemplo,
=A(100000)
para obtener48157
La versión recursiva, 61 bytes ,
comienza a ser irrazonablemente lento para n> 30, y no se puede decir que funcione para n> 40.
fuente
Ruby, 36 bytes
Una implementación directa. Cualquier sugerencia de golf es bienvenida.
fuente
a[n-1]
y tal, la función necesita ser nombrada.Java 7
686151 bytes17 salvados gracias a Leaky Nun.
fuente
int a(int n){return n<3?1:a(n-a(n-2))+a(n---a(n));}
pero, desafortunadamente, usa la misma cantidad de bytes que la respuesta que ya tiene. Además, especificaría que su respuesta está en Java 7, ya que la respuesta de Java 8 sería más corta:n->return n<3?1:a(n-a(n-1))+a(n-a(n-2))
( 39 bytes ) .Oasis ,
975 bytes (no competidor)No competitiva , ya que el lenguaje es posterior al desafío. Gracias a Kenny Lau por guardar 4 bytes. Código:
Forma ampliada (
V
es la abreviatura de11
):Código:
Pruébalo en línea! . Calcula n = 1000 en 0.1 segundos.
fuente
PowerShell v2 +,
857969 bytesToma entrada
$n
, establece$b
que sea una matriz de@(1, 1)
, luego ingresa un bucle desde2 .. $n
. Cada iteración añadimos$b
el último cálculo en la secuencia con un simple+=
y la definición de la secuencia. Luego sacamos el número apropiado de$b
(con un-1
porque las matrices en PowerShell están indexadas a cero). Esto funciona si$n
es1
o2
porque ambos valores están rellenados previamente en los índices más bajos$b
desde el principio, por lo que incluso si el bucle se suma a la basura, se ignora de todos modos.Solución recursiva
7876 bytesLa primera vez que utilicé el equivalente de una lambda como respuesta, ya que generalmente una solución iterativa es más corta (como puede ver en todos los padres anidados).
Pero, en este caso, los parens anidados están casi duplicados en la solución iterativa con las llamadas de matriz anidadas, por lo que la solución recursiva es más corta.No, la solución iterativa es de hecho más corta (ver arriba).Llámalo a través del operador de ejecución, como
&$a 20
. Solo una llamada recursiva directa.fuente
JavaScript (ES6), 66 bytes
Versión no recursiva para la velocidad; La versión recursiva es probablemente más corta pero la dejaré para que otra persona la escriba. Siempre me gusta cuando puedo usar
reduce
. Nota: 1 byte guardado al devolvertrue
(que se convierte en1
cuando se usa en un contexto entero) para dea(1)
ya(2)
.fuente
Pyth, 16 bytes
Define una función
y
.Pruébelo en línea (agregado
yMS20
para imprimir los primeros 20 valores)fuente
Adelante, 76 bytes
¡Finalmente lo hice funcionar!
Pruébalo en línea
Explicación:
Pruébelo en línea (un poco sin golf desde arriba)
Desafortunadamente, la recursividad mutua es demasiado complicada para jugar al golf.
fuente
Arce,
4341 bytesUso:
Este problema es ciertamente un buen candidato para la memorización. Usando la opción de caché , los tiempos de ejecución se reducen significativamente:
Esto se puede ver usando:
fuente
J,
2928 bytesUtiliza la definición recursiva.
Uso
Se utilizan comandos adicionales para formatear múltiples entradas / salidas.
Explicación
fuente
cc, 62 bytes
Esta solución hace uso de matrices y recursividad.
fuente
dc
, ¡hágamelo saber!Erlang, 46 bytes
fuente
Lua, 59 bytes
fuente