मान लीजिए कि हमारे पास एक चरित्र मानचित्रण इस प्रकार है, यहां प्रत्येक अंक, 1 से 9 तक, कुछ वर्णों के लिए मानचित्र।
1 -> ['A', 'B', 'C'] 2 -> ['D', 'E', 'F'] 3 -> ['G', 'H', 'I'] 4 -> ['J', 'K', 'L'] 5 -> ['M', 'N', 'O'] 6 -> ['P', 'Q', 'R'] 7 -> ['S', 'T', 'U'] 8 -> ['V', 'W', 'X'] 9 -> ['Y', 'Z']
यदि हमारे पास कोई संख्या है, तो हमें दी गई मैपिंग सूची में संबंधित वर्णों के साथ उसके अंकों को बदलना होगा और सभी उत्पन्न स्ट्रिंग्स को दिखाना होगा। हमें संख्या में किसी अंक की प्रत्येक घटना के लिए समान वर्ण पर विचार करना चाहिए। दी गई संख्या में 0 नहीं होगा।
तो, अगर इनपुट [4,3,5] जैसा है, तो आउटपुट होगा
JGM KGM LGM JHM KHM LHM JIM KIM LIM JGN KGN LGN JHN KHN LHN JIN KIN LIN JGO KGO LGO JHO KHO LHO JIO KIO LIO
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- बाहर:=एक नई सूची
- अस्थायी:=एक नई सूची
- char_map :=एक नया नक्शा
- सूचकांक:=0
- इनपी में प्रत्येक अंक के लिए, करें
- यदि अंक char_map में नहीं है, तो
- char_map[अंक] :=अनुक्रमणिका
- अस्थायी सूची साफ़ करें
- मैं के लिए 0 से तालिका के आकार के लिए [अंक -1], करते हैं
- यदि अनुक्रमणिका 0 के समान है, तो
- s:=तालिका[अंक -1, i]
- आउट के अंत में s डालें
- यदि अनुक्रमणिका> 0 है, तो
- प्रत्येक स्ट्रिंग के लिए बाहर, करें
- s:=तालिका[अंक -1, i]
- अगर char_map[digit] इंडेक्स के समान नहीं है, तो
- s :=string[char_map[digit]]
- स्ट्रिंग :=स्ट्रिंग कॉन्टेनेट एस
- अस्थायी के अंत में स्ट्रिंग डालें
- अगर char_map[digit] इंडेक्स के समान नहीं है, तो
- s:=तालिका[अंक -1, i]
- अगर char_map[digit] इंडेक्स के समान नहीं है, तो
- ब्रेक
- प्रत्येक स्ट्रिंग के लिए बाहर, करें
- यदि अनुक्रमणिका> 0 , तो
- बाहर:=अस्थायी की एक प्रति
- सूचकांक :=अनुक्रमणिका + 1
- यदि अनुक्रमणिका 0 के समान है, तो
- वापसी
- यदि अंक char_map में नहीं है, तो
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def findCombinations(inp, table): out = list() temp = list() char_map = dict() index = 0 for digit in inp: if digit not in char_map: char_map[digit] = index temp.clear() for i in range(len(table[digit - 1])): if index == 0: s = table[digit - 1][i] out.append(s) if index > 0: for string in out: s = table[digit - 1][i] if char_map[digit] != index: s = string[char_map[digit]] string = string + s temp.append(string) if char_map[digit] != index: break if index > 0: out = temp.copy() index += 1 return out mapping = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I'], ['J', 'K', 'L'], ['M', 'N', 'O'], ['P', 'Q', 'R'], ['S', 'T', 'U'], ['V', 'W', 'X'], ['Y', 'Z']] inp = [4,3,5] res = findCombinations(inp, mapping) for it in res: print(it, end=" ")
इनपुट
[4,3,5]
आउटपुट
JGM KGM LGM JHM KHM LHM JIM KIM LIM JGN KGN LGN JHN KHN LHN JIN KIN LIN JGO KGO LGO JHO KHO LHO JIO KIO LIO