রিকার্সিভ পদ্ধতিতে গ্রে কোড জেনারেট করতে একটি লিস্টে '0' এবং '1' যোগ করে শুরু করা হয়, তারপর লুপের মাধ্যমে বিট প্রিফিক্স যোগ করা হয়।
উদাহরণ
def generate_gray_list(n):
if n <= 0:
return
gray_list = ["0", "1"]
i = 2
while i < (1 << n):
# রিভার্স অর্ডারে কপি যোগ
for j in range(i - 1, -1, -1):
gray_list.append(gray_list[j])
# প্রথম ਹälfte-এ '0' প্রিফিক্স
for j in range(i):
gray_list[j] = "0" + gray_list[j]
# দ্বিতীয় হাফে '1' প্রিফিক্স
for j in range(i, 2 * i):
gray_list[j] = "1" + gray_list[j]
i <<= 1 # i = i * 2
for code in gray_list:
print(code)
n = 3
print("সংখ্যা:", n)
print("গ্রে কোড জেনারেট হচ্ছে...")
generate_gray_list(n)
আউটপুট
সংখ্যা: 3 গ্রে কোড জেনারেট হচ্ছে... 000 001 011 010 110 111 101 100
ব্যাখ্যা
বেস কেস: n=1 এর জন্য ["0", "1"]।
প্রতিটি ধাপে লিস্টকে ডাবল করা হয়: রিভার্স কপি যোগ করে।
বাম হাফে '0', ডান হাফে '1' প্রিফিক্স যোগ করা হয়।
লेफট শিফট অপারেটর (
<<) দিয়ে i ডাবল করা হয়।