Definieren wir f n (k) als die Summe der ersten k Terme der natürlichen Zahlen [1, ∞), wobei jede Zahl n- mal wiederholt wird.
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
Die Antidiagonalen davon als quadratische Anordnung ähneln der OEIS-Sequenz A134546 .
Herausforderung
Schreiben Sie ein Programm / eine Funktion , die zwei nicht negative ganze Zahlen n und k annimmt und f n (k) ausgibt .
Spezifikationen
- Standard I / O - Regeln gelten .
- Standardlücken sind verboten .
- Ihre Lösung kann entweder 0-indiziert oder 1-indiziert für n und / oder k sein, aber bitte spezifizieren Sie welche.
- Bei dieser Herausforderung geht es nicht darum, den kürzesten Ansatz in allen Sprachen zu finden, sondern darum, den kürzesten Ansatz in jeder Sprache zu finden .
- Ihr Code wird in Bytes bewertet , normalerweise in der Codierung UTF-8, sofern nicht anders angegeben.
- Eingebaute Funktionen, die diese Sequenz berechnen, sind zulässig, es wird jedoch empfohlen, eine Lösung zu verwenden, die nicht auf einer eingebauten basiert.
- Erklärungen, auch für "praktische" Sprachen, sind erwünscht .
Testfälle
In diesen Testfällen ist n 1-indiziert und k ist 0-indiziert.
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 ein paar besseren Formaten:
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
Referenzimplementierung
Dies ist in Haskell geschrieben .
f n k = sum $ take k $ replicate n =<< [1..]
f_n(0) = 0
für k
0-indizierte behandeln?
k
Begriffe aus der Liste der wiederholten natürlichen Zahlen, nicht die ersten n*k
Begriffe.