प्रस्तावना
क्रिसमस के बारह दिनों में प्रसिद्ध कैरोल में, कथावाचक को हर दिन कई उपहार दिए जाते हैं। गीत संचयी है - प्रत्येक कविता में, एक नया उपहार जोड़ा जाता है, इसके पहले उपहार की तुलना में एक अधिक मात्रा होती है। एक पार्ट्रिज, दो कछुए कबूतर, तीन फ्रांसीसी हेन्स, और इसी तरह।
किसी भी कविता, एन पर , हम गीत में अब तक प्रस्तुत किए गए संचयी योग की गणना एन वें टेट्राहेड्रल संख्या को खोजकर कर सकते हैं , जो परिणाम देता है:
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
उदाहरण के लिए, पद्य 4 के बाद, हमारे पास 4 * (1 भाग) , 3 * (2 कछुए कबूतर) , 2 * (3 फ्रेंच मुर्गी) और 1 * (4 बुला पक्षी) हैं । इन्हें संक्षेप में, हम प्राप्त करते हैं 4(1) + 3(2) + 2(3) + 1(4) = 20
।
चुनौती
आपका कार्य एक प्रोग्राम या फ़ंक्शन लिखना है, जो कि प्रस्तुत किया गया एक सकारात्मक पूर्णांक है, जो प्रस्तुत करता है 364 ≥ p which 1 की संख्या , यह निर्धारित करता है कि क्रिसमस का कौन सा दिन (कविता) है।
उदाहरण के लिए, यदि p = 286 , हम क्रिसमस के 11 वें दिन हैं। हालाँकि, यदि p = 287 है , तो प्रस्तुत का अगला लोड शुरू हो गया है, जिसका अर्थ है कि यह 12 वां दिन है।
गणितीय रूप से, यह अगला टेट्राहेड्रल नंबर ढूंढ रहा है, और टेट्राहेड्रल नंबरों के पूरे अनुक्रम में अपनी स्थिति वापस कर रहा है।
नियम:
- यह कोड-गोल्फ है , इसलिए सबसे छोटा समाधान (बाइट्स में) जीतता है।
- स्टैंडर्ड गोल्फिंग लूपहोल्स लागू होते हैं।
- जब यह दिन आता है, तो आपका कार्यक्रम 1-अनुक्रमित होना चाहिए।
- आपका सबमिशन एक पूर्ण प्रोग्राम या एक फ़ंक्शन होना चाहिए - लेकिन स्निपेट नहीं।
परीक्षण के मामलों
1 -> 1
5 -> 3
75 -> 7
100 -> 8
220 -> 10
221 -> 11
364 -> 12
x=>{while(x>p)p+=r+=++i;return i}
मुझे यकीन है कि इसे जावास्क्रिप्ट जैसी भाषा में छोटा किया जा सकता है।