কম্পিউটার টিউটোরিয়াল

পাইথনে স্ট্রিংয়ের সকল সম্ভাব্য পারমুটেশন বের করা


একটি দেওয়া স্ট্রিং-এর সকল সম্ভাব্য পারমুটেশন বের করতে itertools মডিউল ব্যবহার করা যায়, যাতে permutations(iterable[, r]) নামের একটি উপকারী মেথড রয়েছে। এই মেথডটি ইটেরেবল-এর উপাদানগুলো থেকে-successive r-দৈর্ঘ্যের পারমুটেশন টাপল আকারে রিটার্ন করে।

সকল পারমুটেশন স্ট্রিং আকারে পেতে হলে, ফাংশন কলের ওপর ইটারেট করে টাপলগুলোকে জয়েন করতে হবে। উদাহরণস্বরূপ:

>>> from itertools import permutations
>>> print [''.join(p) for p in permutations('dune')]
['dune', 'duen', 'dnue', 'dneu', 'deun', 'denu', 'udne', 'uden', 'unde', 'uned', 'uedn', 'uend', 'ndue', 'ndeu', 'nude', 'nued', 'nedu', 'neud', 'edun', 'ednu', 'eudn', 'eund', 'endu', 'enud']

আপনি যদি বিল্ট-ইন মেথড না ব্যবহার করে নিজের অ্যালগরিদম লিখতে চান, তবে রিকারসিভ সমাধান ব্যবহার করতে পারেন:

def permutations(string, step=0):
    if step == len(string):
        # আমরা শেষে পেয়েছি, পারমুটেশন প্রিন্ট করুন
        print("".join(string))
    for i in range(step, len(string)):
        # স্ট্রিং কপি করুন (অ্যারে আকারে স্টোর)
        string_copy = [c for c in string]
        # করেন্ট ইনডেক্সকে step-সহ সওয়্যাপ করুন
        string_copy[step], string_copy[i] = string_copy[i], string_copy[step]
        # এখনো সওয়্যাপ না হওয়া অংশে রিকারস করুন
        permutations(string_copy, step + 1)

print(permutations('one'))

আউটপুট:

one
oen
noe
neo
eno
eon
None
  1. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম

  2. পাইথনে Regex ব্যবহার করে স্ট্রিংয়ে 10+1 প্যাটার্নের সব_match বের করার প্রোগ্রাম

  3. পাইথনে লিস্টের সকল পারমিউটেশন (Permutation) বের করা

  4. পাইথনে স্ট্রিংয়ের সকল সম্ভাব্য পারমুটেশন বের করা