পটভূমি
যেহেতু বেশিরভাগ পিপিসিজি নিয়ামকরা জানতে পারবেন, একটি কুইন একটি প্রোগ্রাম যা রান করার সময় তার নিজস্ব উত্স কোডকে আউটপুট করে; এবং দুটি স্ট্রিংয়ের মধ্যবর্তী লেভেনস্টেইন দূরত্ব হ'ল একটি স্ট্রিংটিকে অন্য স্ট্রেনে পরিবর্তন করার জন্য সন্নিবেশ, মুছা এবং সম্পাদনাগুলির সর্বনিম্ন সংখ্যা। এই চ্যালেঞ্জের মধ্যে আমরা দুটি ধারণাকে একটি "লেভেনকাইন" - এর সাথে একত্রিত করছি: এমন একটি প্রোগ্রাম যা তার নিজস্ব উত্স কোডকে ছাড়িয়ে যায় তবে একটি চরিত্রের একটি উদাহরণ দিয়ে sertedোকানো, মুছে ফেলা বা আলাদা অক্ষর দিয়ে প্রতিস্থাপন করা হয়। (অন্য কথায়, প্রোগ্রাম এবং এর আউটপুট মধ্যে লেভেনস্টাইন দূরত্ব 1।)
কাজটি
একটি লেভেনকুইন লিখুন যেমন এর আউটপুট একটি লেভেনকুইন, সেই প্রোগ্রামটির আউটপুটটিও একটি লেভেনকুইন এবং আরও অনেক কিছু। অতিরিক্তভাবে, এক পর্যায়ে, বারবার প্রোগ্রাম চালানো, তার আউটপুট চালানো, আউটপুট আউটপুট চালানো ইত্যাদির ক্রম অবশ্যই শেষ পর্যন্ত মূল প্রোগ্রামে ফিরে আসতে হবে।
এখানে আরও একটি বিধিনিষেধ রয়েছে যা জিনিসগুলিকে আরও শক্ত করে তোলে: এই চক্রের মধ্যে কোথাও দুটি স্বতন্ত্র প্রোগ্রাম অবশ্যই থাকতে হবে যার কোনও অক্ষর নেই সাধারণ (অন্য কথায়, একটি প্রোগ্রামের মধ্যে এমন কোনও চরিত্র নেই যা অন্য প্রোগ্রামের মধ্যেও বিদ্যমান)। আপনার প্রোগ্রামটি তাই ধীরে ধীরে নিজেকে একটি আলাদা চরিত্রের সেটে রূপান্তরিত করতে চলেছে এবং আবার ফিরে আসবে।
যদি আপনি এমন প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করেন যা আউটপুট উত্পাদন করে এমন কোনও প্রোগ্রামে প্রয়োজনীয় অনিবার্য বয়লারপ্লেট থাকে (যেমন, এটিতে print
স্টেটমেন্ট লেখার কেবল একটি উপায় এবং আউটপুট সম্পর্কিত কোনও কার্যকর রূপ নেই), আপনি সেই বয়লারপ্লেটটিকে উদ্দেশ্যহীন হিসাবে বিবেচনা করতে পারেন may দুটি প্রোগ্রামের মধ্যে কোন অক্ষর রয়েছে তা নির্ধারণের। কোডটির লেভেনকুইন সম্পত্তি নির্ধারণের উদ্দেশ্যে আপনাকে অবশ্যই এই বয়লারপ্লেটটি গণনা করতে হবে।
ব্যাখ্যা
- চক্রের প্রতিটি "প্রোগ্রাম" একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন হতে পারে। এগুলি সব একই হতে হবে না, উদাহরণস্বরূপ কিছু সম্পূর্ণ প্রোগ্রাম হতে পারে এবং কিছু ফাংশন হতে পারে।
- চক্রের সমস্ত প্রোগ্রামগুলির আউটপুট একই ফর্ম ব্যবহার করার প্রয়োজন হয় না। উদাহরণস্বরূপ, কিছু স্ট্যান্ডার্ড আউটপুট মাধ্যমে আউটপুট, এবং কিছু স্ট্যান্ডার্ড ত্রুটির মাধ্যমে আউটপুট পারে।
- আপনার প্রোগ্রামগুলি কোনও ইনপুট ছাড়াই চলবে (বা এমন ভাষাগুলিতে যা কিছু করার জন্য ইনপুট প্রয়োজন, সহজতম ইনপুট)।
- সঠিক কুইন বিধি প্রযোজ্য; যদিও একটি লেভেনকুইন সত্যিকারের কুইন নয়, আপনি যথাযথ কুইন লেখার সময় এমন কিছু করতে পারেন যা অবৈধ হবে। বিশেষত, নাল প্রোগ্রামটি কখনই সঠিক লেভেনকাইন থেকে বৈধ আউটপুট হয় না (এবং এটি আপনার চক্রের অংশ হতে পারে না)।
- লেভেনকাইন সীমাবদ্ধতাটি বাইটের চেয়ে অক্ষরের ক্ষেত্রে পরিমাপ করা হয় (যেমন
ê
উত্সটি ইউটিএফ -8 এ এনকোড থাকা অবস্থায়ও একটি অক্ষর)। অ-অক্ষর-মধ্যে-সীমাবদ্ধতা অক্ষরের ক্ষেত্রেও পরিমাপ করা হয়। বিজয়ের শর্তটি অবশ্য বাইটে গণনা করা হয়।
বিজয় শর্ত
চক্র থেকে কমপক্ষে নিম্নলিখিত তিনটি প্রোগ্রাম জমা দিন: সংক্ষিপ্ততম প্রোগ্রাম (বাইটে পরিমাপ করা); এবং চক্র থেকে দুটি প্রোগ্রাম যার কোনও অক্ষর নেই common এটি সম্ভব যে এর মধ্যে দুটি একই এবং এটিও সম্ভব যে তিনটিই আলাদা। স্কোরটি সংক্ষিপ্ততর প্রোগ্রামের বাইটের দৈর্ঘ্যের উপর ভিত্তি করে সংক্ষিপ্ততর হওয়া ভাল, এইভাবে এটি এক ধরণের কোড-গল্ফ প্রতিযোগিতা তৈরি করে।