একটি ভঙ্গুর কুইন
একটি ভঙ্গুর কুইন একটি কুইন যা একক চরিত্রকে মুছে ফেলার মাধ্যমে প্রতিটি স্ট্রিং তৈরির সম্পত্তি সন্তুষ্ট করে, যখন মূল্যায়ন করা হয়, ত্রুটি তৈরি করে।
উদাহরণ স্বরূপ. যদি আপনার প্রোগ্রামটি asdf
কোয়াইন হয়, তবে এটি ভঙ্গুর হওয়ার জন্য, নিম্নলিখিত প্রোগ্রামগুলিকে ত্রুটি করতে হবে:
sdf
adf
asf
asd
আপনার প্রোগ্রামটি (এবং এর সমস্ত সাবস্ট্রিংগুলি) অবশ্যই সম্পূর্ণ নির্দোষ, এবং অবশ্যই একই ভাষায় হওয়া উচিত। একটি প্রোগ্রাম একটি অসীম লুপে পড়ে (এটি শেষ করতে ব্যর্থ হয়) এমনকি শেষ পর্যন্ত ত্রুটি তৈরি না করলেও এই চ্যালেঞ্জের উদ্দেশ্যে "ত্রুটি তৈরি করা" হিসাবে বিবেচিত হয়।
সাধারণ কুইন বিধিনিষেধগুলি সহ (যেমন নিজস্ব উত্স কোডটি পড়তে সক্ষম নয়) সহ স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ হয়।
উদাহরণস্বরূপ, print("foo")
ভঙ্গুর নয়। এই সমস্ত সাবস্ট্রিংগুলিতে ত্রুটি থাকতে হবে:
rint("foo")
pint("foo")
prnt("foo")
prit("foo")
prin("foo")
print"foo")
print(foo")
print("oo")
print("fo")
print("fo")
print("foo)
print("foo"
যেগুলি ত্রুটি করে না সেগুলি হ'ল:
print("oo")
print("fo")
print("fo")
সুতরাং এটি ভঙ্গুর নয়।
Quines উপর একটি গুরুত্বপূর্ণ নোট
Sensকমত্য দ্বারা , যে কোনও সম্ভাব্য কুইন অবশ্যই এটি সন্তুষ্ট করবে:
প্রোগ্রামটির একটি অংশ যা প্রোগ্রামের আলাদা অংশকে এনকোড করে তা অবশ্যই সনাক্ত করা সম্ভব। ("ভিন্ন" অর্থ যে দুটি অংশ বিভিন্ন অবস্থানে উপস্থিত রয়েছে))
তদতিরিক্ত, একটি কুইন সরাসরি বা অপ্রত্যক্ষভাবে তার নিজস্ব উত্স অ্যাক্সেস করা উচিত।
উদাহরণ
যেহেতু আমি জাভাস্ক্রিপ্টের ক্রিয়া # টু স্ট্রিংকে "এটির নিজস্ব উত্স কোডটি পড়া" বলে বিবেচনা করছি, তাই আমি এটিকে অস্বীকার করছি। তবে, আমি যদি এটি বার না করে থাকি তবে জাভাস্ক্রিপ্টে এখানে একটি ভঙ্গুর কুইন রয়েছে:
f=(n=b=`f=${f}`)=>(a=(n)==`f=${f}`,n=0,a)&(n!=b)?b:q
পরীক্ষক
এখানে এমন একটি প্রোগ্রাম যা আপনার প্রোগ্রামের উত্স কোডটি প্রদত্ত, এমন সমস্ত প্রোগ্রাম উত্পন্ন করে যা অবশ্যই ত্রুটি করতে হবে।
let f = (s) =>
[...Array(s.length).keys()].map(i =>
s.slice(0, i) + s.slice(i + 1)).join("\n");
let update = () => {
output.innerHTML = "";
output.appendChild(document.createTextNode(f(input.value)));
};
input.addEventListener("change", update);
update();
#output {
white-space: pre;
}
#input, #output {
font-family: Consolas, monospace;
}
<input id="input" value="print('foo')">
<div id="output"></div>