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

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


ইটারেটিভ next_permutation অ্যালগরিদম ব্যবহার করে রিকার্সন ছাড়া সব পারমুটেশন জেনারেট করা হয়।

উদাহরণ

from math import factorial

def next_permutation(seq):
    i = len(seq) - 1
    while i > 0 and seq[i-1] >= seq[i]:
        i -= 1
    if i == 0:
        return False
    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 True

def print_all_permutations(s):
    seq = sorted(list(s))
    for _ in range(factorial(len(seq))):
        print(''.join(seq))
        if not next_permutation(seq):
            break

text = "bhd"
print("স্ট্রিং:", text)
print("সর্টেড:", ''.join(sorted(text)))
print("সব পারমুটেশন:")
print_all_permutations(text)

আউটপুট

স্ট্রিং: bhd
সর্টেড: bdh
সব পারমুটেশন:
bdh
bhd
dbh
dhb
hbd
hdb

ব্যাখ্যা

  • স্ট্রিংকে লিস্টে কনভার্ট করে সর্ট (স্মalleset পারমুটেশন)।

  • next_permutation ইন-প্লেস মডিফাই করে পরের পারমুটেশন দেয়।

  • ফলস রিটার্ন হলে শেষ পারমুটেশন পৌঁছেছে।

  • রিকার্সন ছাড়া, কনস্ট্যান্ট এক্সট্রা স্পেস (ইন-প্লেস)۔


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

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

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

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