Quine কী?
Quine হলো একটি প্রোগ্রাম যা কোনো ইনপুট নেওয়া ছাড়াই নিজের সোর্স কোড আউটপুট হিসেবে প্রিন্ট করে। শর্ত: সোর্স ফাইল খুলতে/পড়তে পারবেন না।
ক্লাসিক Quine (পাইথন)
a='a=%r;print(a%%a)';print(a%a)
কিভাবে কাজ করে?
a='a=%r;print(a%%a)'— স্ট্রিংa-তে কোডটি সংরক্ষিত।%r— `repr()` ফরম্যাটিং (কোটেশনসহ রিপ্রেজেন্টেশন)।%%— লিটারাল%সাইন প্রিন্ট করার জন্য এস্কেপ।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)। - সেলফ-রেফারেন্স ও রিকার্শন।
- কম্পিউটার বিজ্ঞানের তাত্ত্বিক দিক (ক্লাইন-এর রিকার্শন থিওরেম)।