একটি স্ট্রিংয়ের ক্যারেক্টারগুলো দিয়ে রিপিটিশন এনাবল করে সব সম্ভাব্য কোম্বিনেশন (পারমুটেশন উইথ রিপিটিশন) জেনারেট করতে রিকার্সিভ ফাংশন ব্যবহার করা হয়।
উদাহরণ
def to_string(my_list):
return ''.join(my_list)
def lex_recurrence(my_string, my_data, last_val, index_val):
length = len(my_string)
for i in range(length):
my_data[index_val] = my_string[i]
if index_val == last_val:
print(to_string(my_data))
else:
lex_recurrence(my_string, my_data, last_val, index_val + 1)
def all_lex(my_string):
length = len(my_string)
my_data = [""] * (length + 1)
my_string = sorted(my_string)
lex_recurrence(my_string, my_data, length - 1, 0)
my_string = "MQ"
print("The string is :")
print(my_string)
print("All permutations with repetition of " + my_string + " are...")
all_lex(my_string)
আউটপুট
The string is : MQ
All permutations with repetition of MQ are...
MM
MQ
QM
QQ
ব্যাখ্যা
to_string: লিস্টকে স্ট্রিংয়ে জয়েন করে।lex_recurrence: রিকার্সিভ ফাংশন, প্রতিটি পজিশনে সব ক্যারেক্টার ট্রাই করে।all_lex: স্ট্রিং সর্ট করে, বাফার বান করে, রিকার্সন শুরু করে।- লেন্থ ২ স্ট্রিং-এর জন্য ২^২ = ৪টি কোম্বিনেশন তৈরি হয়।
নোট: এটি পারমুটেশন উইথ রিপিটিশন (n^r)। যদি রিপিটিশন না চান, তবে itertools.permutations ব্যবহার করুন।