( चैट में "शतरंज" और "फिबोनाची" टैग की मेरी यादृच्छिक जोड़ी के लिए हेल्का की प्रतिक्रिया से प्रेरित )
फाइबोनैचि
फिबोनैकी संख्या गणित के क्षेत्र में और अधिक अच्छी तरह से ज्ञात दृश्यों, जहां प्रत्येक संख्या पिछले दो संख्याओं को एक साथ जोड़कर बना है में से एक हैं। नीचे शून्य अनुक्रमित अनुक्रम की एक परिभाषा है:
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
इस अनुक्रम में परिणाम 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
( OEIS लिंक )। इस चुनौती में, हम केवल कड़ाई से सकारात्मक मूल्यों (ताकि 1, 1, 2, 3, ...
) पर ध्यान केंद्रित कर रहे हैं, और आप शून्य-अनुक्रमण या एक-अनुक्रमण को चुन सकते हैं, लेकिन कृपया प्रस्तुत करें।
फाइबोनैचि संख्याओं का उपयोग विमान के एक टाइलिंग के लिए किया जा सकता है, f(n)
आकार में क्रमिक और एक साथ किनारों को संरेखित करने वाले वर्गों का उपयोग करके । वर्तमान वर्ग से पैटर्न "राइट-अप-लेफ्ट-डाउन" में स्क्वायर रखकर काउंटर-क्लॉकवाइज फैशन में किया जाता है। f(8)=21
नीले रंग में हाइलाइट किए गए शुरुआती वर्ग के साथ इस आंशिक टाइलिंग का एक उदाहरण इस प्रकार है:
आप देख सकते हैं f(1)=1
शुरू करने वर्ग (नीले रंग में हाइलाइट), के रूप में f(2)=1
वर्ग के लिए रखा सही इसके बारे में, f(3)=2
वर्ग रखा ऊपर वहाँ से, f(4)=3
वर्ग रखा छोड़ दिया पर और इतने। अगला वर्ग होगा f(9)=21+13=34
और नीचे की ओर रखा जाएगा। यह आंशिक टाइलिंग विधि है जिसका उपयोग हम इस चुनौती में करेंगे।
रानियाँ
शतरंज के खेल में , सबसे शक्तिशाली टुकड़ा रानी है क्योंकि यह क्षैतिज, लंबवत या तिरछे किसी भी स्थान को स्थानांतरित कर सकता है। नीचे के बोर्ड आरेख में, काले वृत्त के साथ वर्ग दिखाते हैं कि रानी कहाँ जा सकती है:
हम शब्द कवरेज को इस प्रकार परिभाषित करेंगे
वर्गों का प्रतिशत, जो रानी की कुल संख्या को देखते हुए, रानी की कुल संख्या को देखते हुए, और रानी की अपनी शुरुआती स्थिति को देखते हुए, वर्गों की कुल संख्या तक जा सकते हैं।
उदाहरण के लिए ऊपर जाता है, रानी की कवरेज है 28/64 = 43.75%
। यदि रानी ऊपरी-दाएँ h8
वर्ग में होती, तो कवरेज होता 22/64 = 34.375%
। अगर रानी में था e7
, तो कवरेज होगा 24/64 = 37.5%
।
चुनौती
हम इस चुनौती के लिए हमारे शतरंज बोर्ड के रूप में ऊपर दिखाए गए फिबोनाची टाइलिंग का उपयोग करने जा रहे हैं। आपको इनपुट के रूप में दो सकारात्मक पूर्णांक दिए जाएंगे, n
और x
:
- यह
n
दर्शाता है कि टाइलिंग कितनी बड़ी है। ऊपर दिया गया उदाहरण,21
बाईं ओर वर्ग के साथ , जबn = 8
सेf(8) = 21
(शून्य-अनुक्रमित) आकार का एक बोर्ड है । x
का प्रतिनिधित्व करता है जो फाइबोनैचि वर्गों की रानी (रों) प्लेसमेंट के लिए प्रयोग किया जाता है, कवरेज की गणना के लिए। रानियों को उस विशेष फाइबोनैचि वर्ग टाइल में प्रत्येक वर्ग पर एक-एक-बार रखा जाता है, और कुल कवरेज व्यक्तिगत (अद्वितीय) कवरेज का योग है।
उदाहरण के लिए, यहां n = 8
(ऊपर के समान टाइलिंग) और x = 4
( f(4) = 3
वर्ग के अनुसार, छायांकित नीला) की एक छवि है । उन नौ नीले वर्गों में से प्रत्येक में एक रानी को एक-एक करके रखने से, रानियाँ हर वर्ग को कवर कर सकती हैं जो नारंगी रंग का होता है। इस उदाहरण में कुल कवरेज इसलिए है 309/714 = 43.28%
।
जाहिर है, किसी भी समय n = x
, कवरेज होने जा रहा है 100%
(उदाहरण के लिए, के साथ n=8
और x=8
, आप देख सकते हैं कि पूरे बोर्ड पर हर वर्ग कम से कम एक बार कवर होने जा रहा है)। इसके विपरीत, एक उपयुक्त बड़े के साथ n
और x=1
या x=2
, कवरेज दृष्टिकोण (लेकिन तक पहुँचने कभी नहीं) जा रहा है 0%
(उदाहरण के लिए के साथ n=8
और x=1
, कवरेज एक मामूली है 88/714 = 12.32%
)।
दो ऐसे इनपुट नंबरों को देखते हुए, आपको दो प्रतिशत स्थानों पर सटीक, कवरेज प्रतिशत का उत्पादन करना होगा। कृपया निर्दिष्ट करें कि आपका कोड गोलाई को कैसे संभालता है।
नियम
- इनपुट और आउटपुट किसी भी सुविधाजनक प्रारूप में दिए जा सकते हैं , लेकिन दो दशमलव स्थानों के लिए सटीक होना चाहिए। कृपया निर्दिष्ट करें कि आपका कोड गोलाई को कैसे संभालता है।
- मान लें कि कोई अन्य टुकड़े बोर्ड पर नहीं हैं या अन्यथा चाल में हस्तक्षेप करते हैं।
- या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं। यदि कोई फ़ंक्शन है, तो आप इसे प्रिंट करने के बजाय आउटपुट वापस कर सकते हैं।
- यदि संभव हो, तो कृपया ऑनलाइन परीक्षण वातावरण का लिंक शामिल करें ताकि अन्य लोग आपके कोड को आज़मा सकें!
- मानक खामियों को मना किया जाता है।
- यह कोड-गोल्फ है इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।
उदाहरण
n = 8, x = 4
43.28
n = 8, x = 8
100 or 100.00
n = 8, x = 1
12.32
n = 4, x = 1
66.67
n = 4, x = 2
60 or 60.00
n = 5, x = 3
75 or 75.00
n = 5, x = 1
47.5 or 47.50