Prefacio
En el conocido villancico, Los doce días de Navidad , el narrador recibe varios regalos cada día. La canción es acumulativa : en cada verso, se agrega un nuevo regalo, con una cantidad mayor que el regalo anterior. Una perdiz, dos tórtolas, tres gallinas francesas, etc.
En cualquier verso dado, N , podemos calcular la suma acumulada de regalos hasta ahora en la canción al encontrar el número N - tetraédrico , que da los resultados:
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
Por ejemplo, después del versículo 4, hemos tenido 4 * (1 perdiz) , 3 * (2 tórtolas) , 2 * (3 gallinas francesas) y 1 * (4 pájaros voladores) . Al sumar estos, obtenemos 4(1) + 3(2) + 2(3) + 1(4) = 20
.
El reto
Su tarea es escribir un programa o función que, dado un número entero positivo que representa el número de regalos 364 ≥ p ≥ 1 , determine qué día (verso) de Navidad es.
Por ejemplo, si p = 286 , estamos en el día 11 de Navidad. Sin embargo, si p = 287 , entonces la próxima carga de regalos ha comenzado, lo que significa que es el día 12.
Matemáticamente, esto es encontrar el siguiente número tetraédrico y devolver su posición en toda la secuencia de números tetraédricos.
Reglas:
- Este es el código de golf , por lo que gana la solución más corta (en bytes).
- Se aplican lagunas de golf estándar.
- Cuando se trata de días, su programa debe estar indexado en 1.
- Su envío debe ser un programa completo o una función, pero no un fragmento.
Casos de prueba
1 -> 1
5 -> 3
75 -> 7
100 -> 8
220 -> 10
221 -> 11
364 -> 12
x=>{while(x>p)p+=r+=++i;return i}
estoy seguro de que se puede acortar en un lenguaje como JavaScript.