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

পাইথনে Quine প্রোগ্রাম (স্ব-প্রजनনকারী কোড)


Quine কী?

Quine হলো একটি প্রোগ্রাম যা কোনো ইনপুট নেওয়া ছাড়াই নিজের সোর্স কোড আউটপুট হিসেবে প্রিন্ট করে। শর্ত: সোর্স ফাইল খুলতে/পড়তে পারবেন না।

ক্লাসিক Quine (পাইথন)


a='a=%r;print(a%%a)';print(a%a)

কিভাবে কাজ করে?

  1. a='a=%r;print(a%%a)' — স্ট্রিং a-তে কোডটি সংরক্ষিত।
  2. %r — `repr()` ফরম্যাটিং (কোটেশনসহ রিপ্রেজেন্টেশন)।
  3. %% — লিটারাল % সাইন প্রিন্ট করার জন্য এস্কেপ।
  4. print(a%a) — a-র ভ্যালু %r-এ বসিয়ে প্রিন্ট → পুরো কোড আউটপুট হয়।

আউটপুট

a='a=%r;print(a%%a)';print(a%a)

মাল্টি-লাইন Quine (পাঠযোগ্য)


s = 's = %r\nprint(s %% s)'
print(s % s)

ফাইল পড়ে প্রিন্ট করা (Quine নয় - নিয়ম লঙ্ঘন)


print(open(__file__).read())

এটি Quine নয় কারণ এটি ফাইল সিস্টেম থেকে পড়ে।

Quine-এর çeşit

  • quine-relay: ভাষা A-তে লেখা প্রোগ্রাম ভাষা B-তে কোড জেনারেট করে, যা আবার ভাষা A-তে ফেরত দেয়।
  • polyglot quine: একাধিক ভাষায় একসাথে সঠিকভাবে রান হয়।
  • radiation-hardened quine: যেকোনো এক ক্যারেক্টার মুছে দিলেও কাজ করে।

শেখা যাবে

  • স্ট্রিং ফরম্যাটিং (%r, %s, f-string)।
  • সেলফ-রেফারেন্স ও রিকার্শন।
  • কম্পিউটার বিজ্ঞানের তাত্ত্বিক দিক (ক্লাইন-এর রিকার্শন থিওরেম)।
  1. পাইথনে issuperset() ফাংশন

  2. পাইথনে frozenset() – মিউটেবল লিস্টকে ইমিউটেবল বানানো

  3. পাইথনে callable() ফাংশন

  4. পাইথনে আন্ডারস্কোর (_) এর ব্যবহার