Definición
De la descripción en OEIS A006345 :
Para buscar
a(n)
, considere a1
o a2
. Para cada uno, encuentre el sufijo repetido más largo, es decir, para cada unoa(n)=1,2
, encuentre la secuencia más largas
con la propiedad con la quea(1),...,a(n)
termina la secuenciass
. Use el dígito que resulta en el sufijo más corto.a(1) = 1
.
Ejemplo resuelto
a(1)=1
.
Si a(2)=1
, tendremos la secuencia 1 1
donde está la subcadena duplicada más larga desde el final 1
. Si a(2)=2
, en cambio, sería la subcadena vacía. Por lo tanto a(2)=2
.
Cuando n=6
, elegimos entre 1 2 1 1 2 1
y 1 2 1 1 2 2
. En la primera opción, 1 2 1
se duplica consecutivamente desde el final. En la segunda opción, es en su 2
lugar. Por lo tanto, a(6)=2
.
Cuando n=9
, elegimos entre 1 2 1 1 2 2 1 2 1
y 1 2 1 1 2 2 1 2 2
. En la primera opción, la subcadena doble más larga consecutiva es 2 1
, mientras que en la segunda opción 1 2 2
se duplica consecutivamente al final. Por lo tanto a(9)=1
.
Tarea
Dado n
, regreso a(n)
.
Especificaciones
n
será positivo- Puede usar 0 indexado en lugar de 1 indexado. En ese caso, indíquelo en su respuesta. Además, en ese caso,
n
puede ser0
también.
Casos de prueba
Las cajas de prueba están indexadas en 1. Sin embargo, puede usar 0 indexado.
n a(n)
1 1
2 2
3 1
4 1
5 2
6 2
7 1
8 2
9 1
10 1
11 2
12 1
13 2
14 2
15 1
16 1
17 2
18 1
19 1
20 1
Referencias
- WolframMathWorld
- Obligatorio OEIS A006345
fuente
n=9
, la primera opción1 2 1 1 2 2 1 2 1
tiene la subcadena duplicada2 1
al final.Respuestas:
Haskell,
146140137133118 bytesfuente
(\x->(\s->...
? De lo contrario, podrías escribir(\x s->...
.div ...
, puede usar el más corton
. Todas las comparaciones adicionales devolverán falso y no cambiarán el resultado.Python, 137 bytes
Esta solución está usando indexación basada en 0.
fuente
Jalea ,
25242220 bytes2 bytes gracias a Dennis.
Pruébalo en línea!
Un puerto de mi respuesta en Pyth .
fuente
Mathematica, 84 bytes
fuente
Jalea ,
3029282724 bytesPruébalo en línea! o verificar todos los casos de prueba .
fuente
MATL , 34 bytes
Pruébalo en línea! o verificar todos los casos de prueba .
Explicación
fuente
Python 2, 94 bytes
Utiliza indexación basada en 0. Pruébelo en Ideone .
fuente
Pyth , 26 bytes
Banco de pruebas.
Explicación
Cuando
n = 6
, elegimos entre1 2 1 1 2 1
y1 2 1 1 2 2
.Generamos estas dos posibilidades, y luego miramos sus sufijos.
Para el primero, los sufijos son:
1
,2 1
,1 2 1
,1 1 2 1
,2 1 1 2 1
,1 2 1 1 2 1
.Filtramos los sufijos duplicados comprobando si son iguales después de rotarlos por su longitud dividida por 2 (resulta que esta comprobación no es perfecta, porque confirma
1
y2
también).Tomamos el último sufijo duplicado y luego tomamos su longitud.
Luego elegimos la posibilidad que corresponde a una longitud mínima generada anteriormente.
Luego procedemos al siguiente valor de
n
.Para el propósito de este programa, era más golfoso generar la matriz invertida.
fuente
Pyth,
4629 bytesSe inspiró en la excelente respuesta Pyth de @Leaky Nun. Intenté ver si había una forma más corta de usar cuerdas. Todavía 3 bytes cortos!
Puedes probarlo aquí .
fuente
u
ce en lugar de for-loop explícito le ahorra 4 bytesRetina ,
5142 bytes9 bytes gracias a Martin Ender.
Pruébalo en línea!
Un puerto de esta respuesta .
fuente
Perl, 40 bytes
El código tiene 39 bytes de longitud y requiere el
-p
cambio ( +1 byte).El bucle está inspirado en la solución Perl en la página OEIS relevante , aunque se me ocurrió de forma independiente con la expresión regular.
Pruébelo en Ideone .
fuente
JavaScript (ES6), 84
Índice base 0
Menos golf
Prueba
fuente