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

পাইথনে একটি সেটের সব পারমুটেশন জেনারেট করা


গণিতে, একটি সেটের সব সদস্যকে কোনো ক্রম বা সিকোয়েন্সে সাজানো এবং যদি সেটটি ইতিমধ্যে অর্ডার করা থাকে, তবে এর এলিমেন্টগুলোকে পুনর্বিন্যাস (রি-অর্ডারিং) করা পারমুটেশন বলা হয়। আমরা বিভিন্ন টেকনিক ব্যবহার করে পারমুটেশন জেনারেট করতে পারি। নিচে কিছুটি দেওয়া হলো:

পদ্ধতি ১

পাইথনে পারমুটেশন এবং কম্বিনেশনের জন্য একটি ডেডিকেটেড মডিউল আছে যেটিকে itertools বলা হয়।

প্রথমে মডিউলটি আমদানি করুন

>>> import itertools
>>>

পারমুটেশন ফাংশন আমাদেরকে একটি লিস্টের মধ্যে N ভ্যালুর পারমুটেশন পেতে দেয়, যেখানে ক্রম গুরুত্বপূর্ণ। উদাহরণস্বরূপ, [1,2,3,4] থেকে N = 2 ভ্যালু সিলেকশন নিচে দেওয়া হলো:

Permutation (order matters):
>>> print(list(itertools.permutations([1,2,3,4],2)))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]

কম্বিনেশন (ক্রম গুরুত্বপূর্ণ নয়)

>>> print(list(itertools.combinations('1234', 2)))
[('1', '2'), ('1', '3'), ('1', '4'), ('2', '3'), ('2', '4'), ('3', '4')]

পদ্ধতি ২

নিচে কোনো নতুন ইন্টারমিডিয়েট লিস্ট তৈরি না করে একটি লিস্টে ইমপ্লিমেন্টেশন দেওয়া হলো।

def permute(xs, low=0):
    if low + 1 >= len(xs):
        yield xs
    else:
        for p in permute(xs, low + 1):
            yield p
        for i in range(low + 1, len(xs)):
            xs[low], xs[i] = xs[i], xs[low]
            for p in permute(xs, low + 1):
                yield p
            xs[low], xs[i] = xs[i], xs[low]

for p in permute([1, 2, 3]):
    print(p)

আউটপুট

[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]

পদ্ধতি ৩: রিকার্শন ব্যবহার করে

import copy
def perm(prefix, rest):
    for e in rest:
        new_rest = copy.copy(rest)
        new_prefix = copy.copy(prefix)
        new_prefix.append(e)
        new_rest.remove(e)
        if len(new_rest) == 0:
            print(new_prefix + new_rest)
            continue
        perm(new_prefix, new_rest)

perm([], [1, 2, 3])

আউটপুট

[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]

  1. পাইথন প্রোগ্রাম: ১ থেকে n পর্যন্ত সকল সংখ্যার টোটাল সেট বিট গণনা

  2. পাইথন সেট অপারেশন: পূর্ণ নির্দেশিকা

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

  4. পাইথন সেট এক্সপ্লেইন: ইউনিকনেস, ইমিউটেবিলিটি এবং অপারেশন