Desafío:
Dado un entero de índice n
, ya sea generar el n
elemento 'th en esta secuencia, o generar la secuencia hasta e incluyendo el índice n
:
25,25,7,28,29,20,21,22,23,14,35,26,7,28,29,20,16,29,12,15,28,21,14,17,30,13,16,29,12,15,28,21,10,6,12,18,15,11,7,13,19,17,13,9,15,21,18,14,10,16,22,19,15,11,17,23,20,16,12,18,24,21,17,13,19,25,23,19,15,21,27,24,20,16,22,28,25,21,17,23,29,16,13,9,15,21,18,14,10,16,22,20,16,12,18,24,21,17,13,19
¿Cómo funciona esta secuencia?
NOTA: En esta explicación, el índice n
está indexado en 1.
Poner los números 1
a través x
de dos líneas de longitud n*6 - 1
, donde x
depende de la iteración actual y la longitud de los números que se utilizan, y luego sumar los dígitos de los n
'th / derecha-la mayoría de los Anillos Olímpicos de esas dos líneas.
El primer número en la secuencia se calcula de la siguiente manera:
The length of the lines are 5 (because 1*6 - 1 = 5):
12345
67891(0)
Then leave the digits in an Olympic Rings pattern:
1 3 5
7 9
And sum them:
1+3+5+7+9 = 25
Así n=1
resulta en 25
.
El segundo número en la secuencia se calcula de la siguiente manera:
The length of the lines are 11 (because 2*6 - 1 = 11):
12345678910
11121314151(6)
Then leave the digits in the second/right-most Olympic Rings pattern:
7 9 0
4 5
And sum them:
7+9+0+4+5 = 25
Así n=2
resulta en 25
.
El tercer número en la secuencia se calcula de la siguiente manera:
The length of the lines are 17 (because 3*6 - 1 = 17):
12345678910111213
14151617181920212(2)
Then leave the digits in the third/right-most Olympic Rings pattern:
1 2 3
0 1
And sum them:
1+2+3+0+1 = 7
Así n=3
resulta en 7
.
etc.
Reglas de desafío:
- Cuando
n
saca el 'th elemento en la secuencia, puede tomar la entrada como 0 indexada en lugar de 1 indexada, pero tenga en cuenta que los cálculos den*6 - 1
entonces serán(n+1)*6 - 1
o(n+1)*5 + n
. - Los números individuales de más de un dígito se pueden dividir al final de la primera línea cuando hemos alcanzado la longitud
n*5 + n-1
, por lo que es posible que un número con 2 o más dígitos sea parcialmente la parte posterior de la línea 1, y parcialmente el parte delantera de la línea 2.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
Aquí hay una papelera de los casos de prueba 1-1,000 , así que siéntase libre de elegir cualquiera de ellos.
Algunos casos de prueba más altos adicionales:
1010: 24
1011: 24
2500: 19
5000: 23
7500: 8
10000: 8
100000: 25
1*5 + 1-1 = 5
? ¿No debería ser1*5 + 5 - 1 = 9
?n=1
entonces sen*5 + n-1
convierte1*5 + 1-1
, que a su vez es5 - 0 = 5
.n * 5 + n - 1
igual an * 6 - 1
?Respuestas:
Casco , 16 bytes
Pruébalo en línea!
-3 bytes gracias a H.PWiz .
Explicación (apresurada):
fuente
Retina ,
706862 bytesPruébalo en línea!
Explicación
Llamemos a la entrada n , y la usaremos
3
como ejemplo.El
10**
es corto para10*$&*_
que reemplaza la entrada con una cadena de 10n guiones bajos.Ahora reemplazamos cada guión bajo con la longitud de la cadena hasta e incluyendo ese guión bajo. Entonces, esto solo da como resultado el número de 1 a 10n todos concatenados juntos ( 10n siempre es suficiente para llenar dos líneas de la longitud requerida).
Eval! Esta y la siguiente etapa generarán el código fuente de otro programa, que luego se ejecutará contra esa cadena de enteros concatenados.
Para generar ese programa, esta etapa primero reemplaza los enteros con una cadena de guiones bajos de 6n (se
$+
refiere a la entrada original del programa).Luego reemplace esos guiones bajos con
L`.{…}
, donde…
es 6n-1 (la longitud de las líneas que estamos viendo). Así que hemos generado una expresión regular, cuyo cuantificador depende de la entrada original.Cuando este programa se evalúa, coincide con fragmentos de longitud 6n-1 , de los cuales habrá al menos dos. Para nuestro ejemplo de entrada
3
, terminamos con:Ahora solo necesitamos extraer los dígitos relevantes.
Primero, en cada línea (
%
) eliminamos todos menos los últimos cinco dígitos (,-6
). Eso nos daFinalmente:
Expandimos cada dos dígitos (
2
) en los primeros diez (9
, esto está basado en 0) en unario. Esos son los que están en las posiciones de los Anillos Olímpicos.Y contamos el número de guiones bajos resultantes, para sumarlos y convertir el resultado a decimal.
fuente
1
.-7
Python 2 ,
9490 bytesPruébalo en línea!
fuente
Japt ,
333230292827 bytes¡Oh, esto no es bonito!
Salidas el n º plazo, 1-indexada.
Intentalo
Explicación
fuente
Python 2 , 97 bytes
Pruébalo en línea!
fuente
Python 3,
129123 bytesPruébalo en línea
Sin embargo, esto está bastante desordenado, pero funciona.
fuente
05AB1E ,
222120 bytesPruébalo en línea!
Explicación
Enfoque alternativo de 21 bytes
fuente
Jalea , 19 bytes
Pruébalo en línea!
fuente
J ,
61, 5857 bytesPruébalo en línea!
fuente
Ruby ,
65 6356 bytesPruébalo en línea!
fuente
Limpio ,
138101bytesPruébalo en línea!
fuente
Java 8,
138111109 bytesPor supuesto, tendré que responder a mi propio desafío. :)
Perdí mi código inicial que usé para crear los resultados de la prueba en la descripción del desafío, así que acabo de empezar de nuevo.
Explicación:
Pruébalo en línea.
fuente