Considere la matriz de enteros positivos:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
Luego, concatenelos:
1234567891011121314151617181920212223242526...
Y luego se dividen en trozos de longitud variable, cada longitud es igual al N º entero positivo:
[1][23][456][7891][01112][131415][1617181][92021222][324252627][2829303132] ...
---------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 ...
Tarea
Dado un entero N (positivo para la indexación 1 o no negativo para la indexación 0), su tarea es generar la suma de los deltas de los dígitos en el enésimo trozo N (las diferencias entre dígitos consecutivos).
Se aplican las lagunas prohibidas por defecto .
Se aplican los métodos estándar de entrada y salida .
Usted puede elegir entre 0 o 1-indexación para N .
La secuencia debe comenzar con 1 .
Este es el código de golf , el código más corto en bytes gana.
Ejemplos y casos de prueba
Casos de prueba indexados 1. Si desea índices 0, simplemente disminuya N.
N, Chunk, Deltas, Sum
1 -> 1 -> [] -> 0
2 -> 23 -> [1] -> 1
3 -> 456 -> [1, 1] -> 2
4 -> 7891 -> [1, 1, -8] -> -6
5 -> 01112 -> [1, 0, 0,1] -> 2
6 -> 131415 -> [2, -2, 3, -3, 4] -> 4
7 -> 1617181 -> [5, -5, 6, -6, 7, -7] -> 0
8 -> 92021222 -> [-7, -2, 2, -1, 1, 0, 0] -> -7
9 -> 324252627 -> [-1, 2, -2, 3, -3, 4, -4, 5] -> 4
10 -> 2829303132 -> [6, -6, 7, -6, -3, 3, -2, 2, -1] -> 0
Puzzle 2 en CodeGolf-Hackathon (Yo también soy el autor original, así que puedo volver a publicar). Relacionado, Inspiración . Relacionados .
fuente
Respuestas:
JavaScript (ES6),
54535150 bytesGuardado 1 byte gracias a @tsh
0 indexado.
Casos de prueba
Mostrar fragmento de código
fuente
k=>-(n=1,g=s=>s[x=k*-~k/2]-s[x+k]-n||g(s+n++))""-n
APL (Dyalog) , 32 bytes
Pruébalo en línea!
¿Cómo?
+/⍳⍵
- suma de1
an
⍳
- hacer rango de eso' '~⍨⍕
- en cuerda, sin espacios(+/⍳⍵-1)↓
- soltar los primeros caracteres (suma de1
an-1
)⍵↑
- mantener los siguientesn
caracteres⍎¨
- convierte cada carácter en entero2-⍨/
- lista de diferencias (resta hacia atrás por cada 2 artículos)+/
- Añádelo.fuente
Casco , 9 bytes
Pruébalo en línea!
Mi solución al Hackathon.
Explicación:
fuente
Haskell ,
6160 bytesPruébalo en línea!
Explicación:
La suma de los deltas de una lista es la misma que la diferencia entre el último y el primer elemento.
El último elemento (cero-indexada) es
t
,triangle(n)-1 = sum[2..n]
. El primer elemento, entonces, est-n+1
que la lista tienen
elementos.fuente
Python 2 , 80 bytes
Pruébalo en línea!
2**n
es una exageración, por supuesto, pero es un byte más corto que algo asín*n+1
.fuente
Mathematica, 71 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
605753 bytes1 indexado. Versión anterior no recursiva de 60 bytes:
fuente
05AB1E , 8 bytes
0 indexado.
Pruébalo en línea!
fuente
Python 2 , 87 bytes
Pruébalo en línea!
fuente
Python 2 , 104 bytes
Pruébalo en línea!
fuente
Perl 6 ,
5855 bytesPruébalo
Pruébalo
Expandido:
fuente
PHP ,
163147 bytesPruébalo en línea!
Mi primer intento de golf de código ... tengo la sensación de que esto puede ser más corto
Editar: guardado 16 bytes al eliminar varias instancias
fuente
Perl 5 , 79 + 1 (
-p
) = 80 bytesPruébalo en línea!
fuente
Pyth ,
2927 bytesGuardado 2 bytes gracias a @ Mr.Xcoder.
Pruébalo en línea!
fuente
Jalea , 14 bytes
Pruébalo en línea!
Explicación
Originalmente comencé tomando el rango (n (n + 1) / 2) pero como puede tener dígitos adicionales al final de la lista antes de dividirlo, lo cambié a rango (n ^ 2). Tienes dígitos adicionales después de 1-9 de todos modos.
fuente
+²HRDFṫЀ³ḶḣЀRS€‘¤ṪðḣIS
intento original (exitoso pero largo)