मान लीजिए कि हमारे पास एक स्ट्रिंग s और एक संख्या r है। हमें s में वर्णों की r संख्या के सभी क्रमपरिवर्तन प्रदर्शित करने हैं। हमारे पास सभी क्रमपरिवर्तन प्राप्त करने के लिए क्रमपरिवर्तन () फ़ंक्शन है। यह फ़ंक्शन itertools लाइब्रेरी के अंदर मौजूद है।
इसलिए, यदि इनपुट s ="HELLO" r =3 जैसा है, तो आउटपुट होगा
>['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE', 'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL', 'ELO', 'ELH', 'ELL','ELO', 'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL', 'OEL', 'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- vals:=s से r आकार के सभी क्रमपरिवर्तन वाली एक सूची
- res:=एक नई सूची
- वैल में प्रत्येक x के लिए, करें
- अक्षरों की सूची x को स्ट्रिंग में बदलें और रेस में डालें
- रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
from itertools import permutations def solve(s, r): vals=list(permutations(s,r)) res=[] for x in vals: res.append(''.join(x)) return res s = "HELLO" r = 3 print(solve(s, r))
इनपुट
"HELLO", 2
आउटपुट
['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE', 'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL', 'ELO', 'ELH', 'ELL', 'ELO', 'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL', 'OEL', 'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']