Przedmowa
W znanej kolędie Dwanaście dni świąt Bożego Narodzenia narrator otrzymuje codziennie kilka prezentów. Piosenka jest kumulatywna - w każdym wersecie dodawany jest nowy prezent, o jeden wyższy od prezentu przed nim. Jedna kuropatwa, dwie gołębie żółwiowe, trzy francuskie kury i tak dalej.
W dowolnym wierszu N możemy obliczyć łączną sumę prezentów do tej pory w piosence, znajdując N- tą liczbę czworościenną , która daje wyniki:
Verse 1: 1
Verse 2: 4
Verse 3: 10
Verse 4: 20
Verse 5: 35
Verse 6: 56
Verse 7: 84
Verse 8: 120
Verse 9: 165
Verse 10: 220
Verse 11: 286
Verse 12: 364
Na przykład po wersecie 4 mieliśmy 4 * (1 kuropatwa) , 3 * (2 turkawki) , 2 * (3 kury francuskie) i 1 * (4 wzywające ptaki) . Sumując je, otrzymujemy 4(1) + 3(2) + 2(3) + 1(4) = 20
.
Wyzwanie
Twoim zadaniem jest napisanie programu lub funkcji, która przy dodatniej liczbie całkowitej reprezentującej liczbę prezentów 364 ≥ p ≥ 1 , określa, który dzień (wiersz) Bożego Narodzenia jest.
Na przykład, jeśli p = 286 , jesteśmy w 11. dniu świąt Bożego Narodzenia. Jeśli jednak p = 287 , rozpoczęło się kolejne ładowanie prezentów, co oznacza, że jest to 12 dzień.
Matematycznie znajduje to kolejną liczbę czworościenną i zwraca jej pozycję w całej sekwencji liczb czworościennych.
Zasady:
- To jest golf golfowy , więc wygrywa najkrótsze rozwiązanie (w bajtach).
- Obowiązują standardowe luki w grze w golfa.
- Jeśli chodzi o dni, twój program musi mieć indeks 1.
- Twoje zgłoszenie musi być pełnym programem lub funkcją - ale nie fragmentem kodu.
Przypadki testowe
1 -> 1
5 -> 3
75 -> 7
100 -> 8
220 -> 10
221 -> 11
364 -> 12
x=>{while(x>p)p+=r+=++i;return i}
jestem pewien, że można go skrócić w języku takim jak JavaScript.