Definamos f n (k) como la suma de los primeros k términos de los números naturales [1, ∞) donde cada número se repite n veces.
k | 0 1 2 3 4 5 6 7 8 9
--------+-------------------------------------------------
f_1(k) | 0 1 3 6 10 15 21 28 36 45
deltas | +1 +2 +3 +4 +5 +6 +7 +8 +9
--------+-------------------------------------------------
f_2(k) | 0 1 2 4 6 9 12 16 20 25
deltas | +1 +1 +2 +2 +3 +3 +4 +4 +5
--------+-------------------------------------------------
f_3(k) | 0 1 2 3 5 7 9 12 15 18
deltas | +1 +1 +1 +2 +2 +2 +3 +3 +3
Los anti-diagonales de esto como una matriz cuadrada son similares a la secuencia OEIS A134546 .
Desafío
Escriba un programa / función que tome dos enteros no negativos nyk y produzca f n (k) .
Especificaciones
- Normas estándar de E / S se aplican .
- Las lagunas estándar están prohibidas .
- Su solución puede estar indexada a 0 o indexada a 1 para n y / o k, pero especifique cuál.
- Este desafío no se trata de encontrar el enfoque más corto en todos los idiomas, sino de encontrar el enfoque más corto en cada idioma .
- Su código se puntuará en bytes , generalmente en la codificación UTF-8, a menos que se especifique lo contrario.
- Las funciones integradas que calculan esta secuencia están permitidas, pero se recomienda incluir una solución que no se base en una función integrada.
- Se alientan las explicaciones, incluso para los idiomas "prácticos" .
Casos de prueba
En estos casos de prueba, n está indexado en 1 yk está indexado en 0.
n k fn(k)
1 2 3
2 11 36
11 14 17
14 21 28
21 24 27
24 31 38
31 0 0
En algunos formatos mejores:
1 2
2 11
11 14
14 21
21 24
24 31
31 0
1, 2
2, 11
11, 14
14, 21
21, 24
24, 31
31, 0
Implementación de referencia
Esto está escrito en Haskell .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
de k
0 indexado?
k
términos de la lista de números naturales repetidos, no los primeros n*k
términos.