मान लीजिए कि हमारे पास n पंक्तियों और m स्तंभों वाला एक ग्रिड है। अमल और बिमल उस ग्रिड पर एक खेल खेल रहे हैं। खेल का नियम नीचे जैसा है -
अमल शीर्ष पंक्ति में कहीं सफेद कमल की टाइल रखता है और बिमल नीचे की पंक्ति में कहीं एक कैटरपिलर टाइल रखता है। अमल खेल शुरू करता है और वे वैकल्पिक रूप से खेल रहे हैं। अमल अपनी टाइल को वर्तमान सेल के ग्रिड के अंदर 8 आसन्न कोशिकाओं में से किसी में भी स्थानांतरित कर सकता है, लेकिन बिमल की कैटरपिलर टाइल केवल ग्रिड के अंदर बाएं या दाएं स्थानांतरित हो सकती है, या उसी स्थिति में रह सकती है। अमल का लक्ष्य जितना संभव हो उतना कम चाल का उपयोग करके बिमल को पकड़ना है, जबकि बिमल (कैटरपिलर टाइल के साथ) को यथासंभव लंबे समय तक जीवित रहना है। यदि वे अपने कमल और कैटरपिलर को रखने के लिए यादृच्छिक रूप से दो स्तंभों का चयन करते हैं, तो हमें अमल द्वारा इस खेल को जीतने के लिए अपेक्षित चालों की अपेक्षित संख्या ज्ञात करनी होगी।
इसलिए, यदि इनपुट n =5 m =7 जैसा है, तो आउटपुट 4.571428571428571 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- r :=0
- 0 से m-1 की सीमा में l के लिए
- अस्थायी:=n - 1.0
- अगर l>=n, तो
- अस्थायी:=अस्थायी + (एल - एन + 1) * ((एल -1) / एम)
- अगर एल <एम - एन, तो
- अस्थायी:=अस्थायी + (एम - एन - एल) * ((एम - एल - 2) / एम)
- r :=r + temp / m
- रिटर्न आर
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n, m): r = 0 for l in range(m): temp = n - 1.0 if l >= n: temp += (l - n + 1) * ((l - 1) / m) if l < m - n: temp += (m - n - l) * ((m - l - 2) / m) r += temp / m return r n = 5 m = 7 print(solve(n, m))
इनपुट
5, 7
आउटपुट
4.571428571428571