Definiamo f n (k) come la somma dei primi k termini dei numeri naturali [1, ∞) dove ogni numero viene ripetuto n volte.
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
Le anti-diagonali di questo come una matrice quadrata sono simili a sequenza OEIS A134546 .
Sfida
Scrivi un programma / funzione che accetta due numeri interi non negativi n e k e genera f n (k) .
specificazioni
- Si applicano le regole I / O standard .
- Sono vietate le scappatoie standard .
- La soluzione può essere indicizzata 0 o 1 per n e / o k, ma specificare quale.
- Questa sfida non riguarda la ricerca dell'approccio più breve in tutte le lingue, ma piuttosto la ricerca dell'approccio più breve in ciascuna lingua .
- Il tuo codice sarà assegnato punteggio in byte , di solito nella codifica UTF-8, se non diversamente specificato.
- Sono consentite funzioni integrate che calcolano questa sequenza ma è incoraggiata l'inclusione di una soluzione che non si basa su un built-in.
- Le spiegazioni, anche per le lingue "pratiche", sono incoraggiate .
Casi test
In questi casi di test, n è 1 indicizzato e k è 0 indicizzato.
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
In alcuni formati migliori:
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
Implementazione di riferimento
Questo è scritto in Haskell .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0per k0-indicizzato?
ktermini dall'elenco di numeri naturali ripetuti, non i primi n*ktermini.
