Kata pengantar
Dalam lagu Natal yang terkenal, The Twelve Days of Christmas , narator dihadiahi beberapa hadiah setiap hari. Lagu ini bersifat kumulatif - di setiap ayat, hadiah baru ditambahkan, dengan jumlah yang lebih tinggi dari hadiah sebelumnya. Satu Partridge, Dua Merpati Penyu, Tiga Ayam Perancis, dan seterusnya.
Pada setiap ayat tertentu, N , kita dapat menghitung jumlah kumulatif hadiah sejauh ini dalam lagu dengan menemukan nomor tetrahedral ke- N , yang memberikan hasil:
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
Misalnya, setelah ayat 4, kami memiliki 4 * (1 ayam hutan) , 3 * (2 burung merpati) , 2 * (3 ayam Perancis) dan 1 * (4 burung pemanggil) . Dengan menjumlahkan ini, kita dapatkan 4(1) + 3(2) + 2(3) + 1(4) = 20
.
Tantangan
Tugas Anda adalah menulis sebuah program atau fungsi yang, diberi bilangan bulat positif yang mewakili jumlah hadiah 364 ≥ p ≥ 1 , menentukan hari (ayat) Natal mana yang tepat.
Sebagai contoh, jika p = 286 , kita berada pada hari Natal ke-11. Namun, jika p = 287 , maka muatan hadiah berikutnya telah dimulai, artinya ini adalah hari ke-12.
Secara matematis, ini menemukan nomor tetrahedral berikutnya, dan mengembalikan posisinya di seluruh urutan nomor tetrahedral.
Aturan:
- Ini adalah kode-golf , sehingga solusi terpendek (dalam byte) menang.
- Berlaku celah golf standar.
- Dalam hal berhari-hari, program Anda harus diindeks 1.
- Kiriman Anda harus berupa program atau fungsi lengkap - tetapi bukan cuplikan.
Uji Kasus
1 -> 1
5 -> 3
75 -> 7
100 -> 8
220 -> 10
221 -> 11
364 -> 12
x=>{while(x>p)p+=r+=++i;return i}
:, saya yakin itu bisa dibuat lebih pendek dalam bahasa seperti JavaScript.