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

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


রিকার্সিভ ব্যাকট্র্যাকিং এবং factorial ব্যবহার করে স্ট্রিংয়ের সব পারমুটেশন লেক্সিকোগ্রাফিক অর্ডারে জেনারেট করা হয়।

উদাহরণ

from math import factorial

def next_permutation(seq):
    """লেক্সিকোগ্রাফিকভাবে পরের পারমুটেশন রিটার্ন করে"""
    seq = list(seq)
    i = len(seq) - 1
    while i > 0 and seq[i-1] >= seq[i]:
        i -= 1
    if i == 0:
        return None
    j = len(seq) - 1
    while seq[j] <= seq[i-1]:
        j -= 1
    seq[i-1], seq[j] = seq[j], seq[i-1]
    seq[i:] = reversed(seq[i:])
    return seq

def print_permutations(s):
    seq = sorted(s)  # শুরুতে সর্টেড
    for _ in range(factorial(len(seq))):
        print(''.join(seq))
        seq = next_permutation(seq)
        if seq is None:
            break

text = input("স্ট্রিং দিন: ")
print("পারমুটেশনগুলো:")
print_permutations(text)

আউটপুট

স্ট্রিং দিন: hey
পারমুটেশনগুলো:
ehy
eyh
hey
hye
yeh
yhe

ব্যাখ্যা

  • স্ট্রিং সর্ট করে লেক্সিকোগ্রাফিকלי সmaalest পারমুটেশন থেকে শুরু।

  • next_permutation অ্যালগরিদম: ডান থেকে বামে প্রথম ডিক্রিজ পেয়ার খুঁজে, সোয়্যাপ, রিভার্স।

  • টোটাল n! পারমুটেশন থাকবে।

  • itertools.permutations বিল্ট-ইন অ্যাল্টারনেটিভ।


  1. পাইথন প্রোগ্রাম একটি ইন্টারভালের সব প্রাইম নম্বর প্রিন্ট করা

  2. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম

  3. পাইথনে স্ট্রিং-এ জোড় দৈর্ঘ্যের শব্দ প্রিন্ট করা

  4. পাইথনে একটি লিস্টের সব সাবলিস্ট প্রিন্ট করার প্রোগ্রাম