कल मैंने यह सवाल राइफल फेरबदल के बारे में पूछा । ऐसा लगता है कि कल का सवाल थोड़ा कठिन था इसलिए यह सवाल एक संबंधित लेकिन बहुत आसान काम है।
आज आपको यह निर्धारित करने के लिए कहा जाता है कि क्या क्रमपरिवर्तन वास्तव में एक राइफल फेरबदल है। राइफल फेरबदल की हमारी परिभाषा हमारे अंतिम प्रश्न से अनुकूलित है:
फेरबदल का पहला हिस्सा विभाजन है। विभाजन में कार्ड के डेक को दो में विभाजित करें। दो उपखंड निरंतर, पारस्परिक रूप से अनन्य और संपूर्ण होने चाहिए। वास्तविक दुनिया में अपने विभाजन को जितना संभव हो उतना करीब बनाना चाहते हैं, हालांकि इस चुनौती में यह एक विचार नहीं है, सभी विभाजन जो कि पतित हैं (एक विभाजन खाली है) समान विचार के हैं।
उनके विभाजन के बाद, कार्ड को इस तरह से एक साथ जोड़ दिया जाता है कि कार्ड उस विभाजन के भीतर अपने सापेक्ष क्रम को बनाए रखते हैं जिसका वे सदस्य हैं । उदाहरण के लिए, यदि कार्ड ए डेक में कार्ड बी से पहले है और कार्ड ए और बी एक ही विभाजन में हैं, तो कार्ड ए को अंतिम परिणाम में कार्ड बी से पहले होना चाहिए , भले ही उनके बीच कार्ड की संख्या बढ़ गई हो। यदि A और B अलग-अलग विभाजनों में हैं, तो वे किसी भी क्रम में हो सकते हैं, चाहे उनका प्रारंभिक क्रम अंतिम परिणाम में हो।
प्रत्येक राइफल फेरबदल को कार्ड के मूल डेक के क्रमपरिवर्तन के रूप में देखा जा सकता है। उदाहरण के लिए क्रमपरिवर्तन
1,2,3 -> 1,3,2
एक व्याकुल फेरबदल है। यदि आप डेक को ऐसे ही विभाजित करते हैं
1, 2 | 3
हम देखते हैं कि हर कार्ड में 1,3,2
विभाजन के हर दूसरे कार्ड के लिए समान सापेक्ष क्रम है। 2
अभी भी है 1
।
दूसरी ओर निम्नलिखित क्रमपरिवर्तन एक राइफल फेरबदल नहीं है।
1,2,3 -> 3,2,1
हम इसे सभी दो (गैर-तुच्छ) विभाजनों के लिए देख सकते हैं
1, 2 | 3
1 | 2, 3
कार्ड की एक जोड़ी है जो उनके सापेक्ष आदेशों को बनाए नहीं रखते हैं। पहले विभाजन में 1
और 2
उनके क्रम को बदलते हैं, जबकि दूसरे विभाजन में 2
और 3
उनके क्रम को बदलते हैं।
कार्य
किसी भी उचित विधि के माध्यम से क्रमचय को देखते हुए, यह निर्धारित करें कि क्या यह एक वैध राइफल फेरबदल का प्रतिनिधित्व करता है। आपको "हाँ, यह एक राइफल फेरबदल है" और "नहीं, यह राइफल फेरबदल नहीं है" के लिए दो अलग-अलग निरंतर मूल्यों का उत्पादन करना चाहिए।
यह कोड-गोल्फ है इसलिए उत्तर बाइट में कम बाइट के साथ बेहतर स्कोर किए जाएंगे।
परीक्षण के मामलों
1,3,2 -> True
3,2,1 -> False
3,1,2,4 -> True
2,3,4,1 -> True
4,3,2,1 -> False
1,2,3,4,5 -> True
1,2,5,4,3 -> False
5,1,4,2,3 -> False
3,1,4,2,5 -> True
2,3,6,1,4,5 -> False
[3,1,4,2,5]
।
[2,3,6,1,4,5]
:।
[0, ..., n-1]
बजाय इसकी अनुमति ले सकते हैं [1, ..., n]
?
0
मिथ्या के लिए, लेकिन सत्य के लिए कोई पूर्णांक[1, +∞)
?