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

পাইথনে itertools ব্যবহার করে স্ট্রিং-এর প্রথম nটি ডISTINCT পারমিউটেশন প্রিন্ট করা


বস্তুগুলো পারমিউটেশন হচ্ছে কিভাবে সেগুলো ভিন্ন ক্রমে উপস্থিত হতে পারে তার রিপ্রেজেন্টেশন। কিন্তু কখনও কখনও দেওয়া বস্তু সিরিজে দুটি বস্তু একই হতে পারে। সেক্ষেত্রে দুটি সিকোয়েন্স সমান হয়ে যায়। এই আর্টিকেলে আমরা দেখব দেওয়া বস্তু লিস্ট থেকে শুধু যুনিক সিকোয়েন্সগুলো কীভাবে রিপ্রেজেন্ট করতে হয়।

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
  1. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম

  2. পাইথন স্ট্রিং মেথডসমূহ: সম্পূর্ণ রেফারেন্স গাইড

  3. পাইথনে টাপল (Tuple) কমপ্লিট প্রিন্ট করা স্ট্রিং ফরম্যাটিং দিয়ে

  4. পাইথনে কনক্যাটেনেটেড স্ট্রিং প্রিন্ট করার পদ্ধতি