বস্তুগুলো পারমিউটেশন হচ্ছে কিভাবে সেগুলো ভিন্ন ক্রমে উপস্থিত হতে পারে তার রিপ্রেজেন্টেশন। কিন্তু কখনও কখনও দেওয়া বস্তু সিরিজে দুটি বস্তু একই হতে পারে। সেক্ষেত্রে দুটি সিকোয়েন্স সমান হয়ে যায়। এই আর্টিকেলে আমরা দেখব দেওয়া বস্তু লিস্ট থেকে শুধু যুনিক সিকোয়েন্সগুলো কীভাবে রিপ্রেজেন্ট করতে হয়।
itertools মডিউলে permutations নামে একটি মেথড আছে যা এই কাজে সাহায্য করে। যুনিক পারমিউটেশন পেতে আমরা set মেথডের সাহায্য নিব যেটি শুধু ডISTINCT উপাদান সংরক্ষণ করে। কিন্তু তার আগে sorted মেথড ব্যবহার করে উপাদানগুলো সর্টেড অর্ডারে নিব।
নিচের প্রোগ্রামে K হচ্ছে পুরো যুনিক পারমিউটেশন থেকে আমরা কতগুলো যুনিক উপাদান দেখাতে চাই। একটি হুইল লুপ ব্যবহার করে আমরা যুনিক এলিমেন্টগুলো ফাইনাল লিস্টে যোগ করব শুধু তখনই যখন সেটি ইতিমধ্যে সেটে যোগ করা নেই।
উদাহরণ
from itertools import permutations
def permutation_value(str, k):
s = sorted(list(str))
p = permutations(s)
m = 0
set_1 = set()
str = ''
while m < k:
str = ''.join(p.__next__())
if str not in set_1:
set_1.add(str)
print(str)
m += 1
str = "xyxxz"
i = 12
permutation_value(str, i)
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের ফলাফল পাবেন:
xxxyz xxxzy xxyxz xxyzx xxzxy xxzyx xyxxz xyxzx xyzxx xzxxy xzxyx xzyxx