Prefazione
Nel noto canto natalizio , I dodici giorni di Natale , il narratore viene presentato con diversi doni ogni giorno. La canzone è cumulativa : in ogni verso viene aggiunto un nuovo regalo, con una quantità superiore a quella del regalo precedente. Una pernice, due tortore, tre galline francesi e così via.
In qualsiasi verso, N , possiamo calcolare la somma cumulativa di regali finora nella canzone trovando il N ° numero tetraedrico , che dà i risultati:
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
Ad esempio, dopo il versetto 4, abbiamo avuto 4 * (1 pernice) , 3 * (2 tortore) , 2 * (3 galline francesi) e 1 * (4 uccelli chiamanti) . Sommando questi, otteniamo 4(1) + 3(2) + 2(3) + 1(4) = 20
.
La sfida
Il tuo compito è di scrivere un programma o una funzione che, dato un numero intero positivo che rappresenta il numero di regali 364 ≥ p ≥ 1 , determina quale giorno (verso) di Natale è.
Ad esempio, se p = 286 , siamo l'11 ° giorno di Natale. Tuttavia, se p = 287 , è iniziato il prossimo carico di regali, il che significa che è il 12 ° giorno.
Matematicamente, questo sta trovando il prossimo numero tetraedrico e sta riportando la sua posizione nell'intera sequenza di numeri tetraedrici.
Regole:
- Questo è code-golf , quindi vince la soluzione più breve (in byte).
- Si applicano scappatoie da golf standard.
- Quando si tratta di giorni, il programma deve essere 1 indicizzato.
- L'invio deve essere un programma completo o una funzione, ma non uno snippet.
Casi test
1 -> 1
5 -> 3
75 -> 7
100 -> 8
220 -> 10
221 -> 11
364 -> 12
x=>{while(x>p)p+=r+=++i;return i}
sono sicuro che può essere ridotto in una lingua come JavaScript.