मान लीजिए कि हमारे पास लोअरकेस अक्षरों वाला एक स्ट्रिंग S है, अब दो खिलाड़ी खेल खेल रहे हैं। नियम इस प्रकार हैं -
-
खिलाड़ी खेल जीत जाता है, अगर, किसी भी चाल पर, कोई खिलाड़ी पैलिंड्रोम स्ट्रिंग प्राप्त करने के लिए स्ट्रिंग के पात्रों को फेरबदल कर सकता है।
-
खिलाड़ी तब जीत नहीं सकता जब उसे स्ट्रिंग से किसी वर्ण को हटाना पड़े।
हमें यह ध्यान रखना होगा कि दोनों खिलाड़ी बेहतर तरीके से खेल खेलते हैं और खिलाड़ी 1 खेल शुरू करता है। हमें खेल के विजेता को ढूंढना है।
इसलिए, यदि इनपुट "pqpppq" जैसा है, तो आउटपुट प्लेयर1 होगा क्योंकि प्लेयर-1 पहले चरण में वर्णों को "ppqqpp" प्राप्त करने के लिए व्यवस्थित करता है और गेम जीतता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
l :=अनुक्रम का आकार
-
freq :=आकार 26 की सूची बनाएं और 0 से भरें
-
मेरे लिए 0 से l की सीमा में, 1 की वृद्धि करें
-
अनुक्रम की आवृत्ति [i] को 1 से बढ़ाएं
-
गिनती :=0
-
मेरे लिए 0 से 25 की सीमा में, करें
-
अगर freq[i] mod 2 0 नहीं है, तो
-
गिनती :=गिनती + 1
-
-
-
अगर गिनती 0 है या गिनती विषम है, तो
-
वापसी 1
-
-
अन्यथा,
-
वापसी 2
-
-
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def who_is_the_winner(sequence): l = len(sequence) freq = [0 for i in range(26)] for i in range(0, l, 1): freq[ord(sequence[i]) - ord('a')] += 1 count = 0 for i in range(26): if (freq[i] % 2 != 0): count += 1 if (count == 0 or count & 1 == 1): return 1 else: return 2 sequence = "pqpppq" print("Player:", who_is_the_winner(sequence) )
इनपुट
"pqpppq"
आउटपुट
Player: 1