মিউটেশন-কড়া কুইন


15

আপনার কাজটি এমন একটি প্রোগ্রাম তৈরি করা যা এর নিজস্ব উত্স মুদ্রণ করে।

"আরে, আমাদের ইতিমধ্যে এই চ্যালেঞ্জ রয়েছে, এবং এর প্রচুর পরিমাণে বৈচিত্র! আপনি কেন অন্য একটি তৈরি করছেন?" আপনি জিজ্ঞাসা করতে পারেন, তবে এইটি সবচেয়ে কঠিন হয়ে উঠবে (আশা করি, যাইহোক)।

আপনার কুইন অবশ্যই "মিউটেশন-কঠোর" হওয়া উচিত, যার অর্থ কুইন, এমনকি এর যে কোনও একটি চরিত্রের জায়গায় নকল করা থাকলেও অবশ্যই মূল প্রোগ্রামটির উত্স কোডটি আউটপুট করতে হবে।

উদাহরণস্বরূপ, আপনার যদি একটি কুইন থাকে (নিম্নলিখিত উদাহরণটি কোনও ভাষায় লেখা হয় না, এটি কেবলমাত্র সিউডোকোড):

abcd

এই প্রোগ্রামগুলি অবশ্যই সমস্ত আউটপুট abcd:

aabcd
abbcd
abccd
abcdd

(যাদের প্রোগ্রামের প্রতিটি ক্ষেত্রে a, b, cএবং dপ্রতিটি স্থানে সদৃশ হয়, যার মানে সদৃশ চরিত্র মূল চরিত্র পর সরাসরি স্থাপন করা হয়।)

নিয়মাবলী:

  • স্ট্যান্ডার্ড কুইন বিধি প্রযোজ্য।
  • একটি বহু-বাইট অক্ষর একটি অক্ষর হিসাবে গণনা করা হয়, এবং নকল করা হলে চরিত্রটি তার স্বতন্ত্র বাইটে "বিভক্ত" হয় না।

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড!


এই কি গণনা? 0এবং 00সিজেমে উভয় আউটপুট 0
জিওকাভেল

না, 0সঠিক কোয়েন নয়।
ডেনিস


কোড মিউটেশনের সমস্যাটি কি সাধারণভাবে সমাধানযোগ্য? যদি কোনও উদ্ধৃত স্ট্রিংয়ের অভ্যন্তরে কোনও চরিত্রের মধ্যে মিউটেশন না ঘটে তবে এটি সাধারণত প্রোগ্রামটিকে দূষিত করে।
হেসেন

শিরোনামটি কি কিছুটা বিভ্রান্তিকর নয়? "মিউটেশন" কোনও চরিত্র পুনরাবৃত্তি না করে পরিবর্তনের পরামর্শ দেয়
লুইস মেন্ডো

উত্তর:


18

> <> , 56 বাইট

^
.
+
8
f
0
o
a
o
~
:
?
~
:
?
:
-
*
4
8
:
^
^
}
*
3
d
'

এটি অনলাইন চেষ্টা করুন! বা সমস্ত মিউটেশন যাচাই করুন

আসল প্রোগ্রামটি কীভাবে কাজ করে (পুরানো)

অনুবাদক কক্ষে শুরু হয় (0, 0)^দিকটি উপরের দিকে সেট করে , তাই নির্দেশিকা পয়েন্টার (আইপি) ঘরের চারপাশে মোড়ানো (0, 20)

'স্ট্রিং মোডটি সক্রিয় করে: পরবর্তীটির 'মুখোমুখি না হওয়া পর্যন্ত , আইপি এর অধীনে সমস্ত অক্ষর স্ট্যাকের উপর চাপ দেওয়া হয়। একই' প্রায় মোড়কে পরে আবার পাওয়া যায় নি, তাই আমরা ধাক্কা

d3*}^^:84*=?~oao0f.^

আইপিটি (0, 19) এ অবতরণ করছে, এখনও উপরের দিকে যাচ্ছে। নির্বাহ d3*}push কর্মের 13 = 0xd , তারপর 3 , তা বৃদ্ধি পায় উভয় মান ( 39 / একক উদ্ধৃতি ), তারপর ডানে স্ট্যাক rotates। এটি স্ট্যাকটি নীচে ছেড়ে দেয়।

'd3*}^^:84*=?~oao0f.^

পরবর্তী দুটি নির্দেশাবলী ( ^) এই মুহুর্তে কিছুই করবেন না।

:84*=স্ট্যাকের শীর্ষটিকে নকল করে 8 এবং 4 টি ধাক্কা দেয় , সেগুলি ( 32 / স্পেস ) গুণ করে , তারপরে স্থানের সাথে সাম্যের জন্য সদৃশ চরিত্রটি পরীক্ষা করে । আনল্যাটারড প্রোগ্রামের জন্য এটি সর্বদা 0 টি ধাক্কা দেবে ।

?যদি স্ট্যাকের শীর্ষটি মিথ্যা হয় তবে পরবর্তী নির্দেশাবলী এড়িয়ে যান। মূল প্রোগ্রামের জন্য, এটি সর্বদা হয়, তাই ~সর্বদা এড়িয়ে যায়।

oaoস্ট্যাকের শীর্ষে পপস এবং মুদ্রণ করে, 10 / লাইনফিডে চাপ দেয় , তারপরে পপস এবং লাইনফিড মুদ্রণ করে ।

অবশেষে স্ট্যাকের পরবর্তী অক্ষরটি দিয়ে শুরু করে (0, 15) (নীচের দিকে )0f. ঘরে ঝাঁপ দেয় ।^

স্ট্যাকটি খালি হয়ে গেলে, পুরো উত্স কোডটি মুদ্রণ করা হবে। :ব্যর্থ হবে এবং প্রোগ্রামটি প্রস্থান করবে।

পরিবর্তিত প্রোগ্রামগুলি কীভাবে কাজ করে (পুরানো)

যে কোনও নন-লাইনফিড অক্ষর নকল করা কেবল প্রোগ্রামটিকে অনুভূমিকভাবে প্রসারিত করবে। যেহেতু প্রোগ্রামটি উল্লম্বভাবে কার্যকর হয়, তাই এই অতিরিক্ত নির্দেশাবলী কখনও কার্যকর করা হবে না।

Bottomost আগে কোনো লাইনফীড অনুরূপ ^কোষ নামান হবে (0, 14) এবং (0, 15) থেকে (0, 15) এবং (0, 16)0f.এখন সর্বনিম্নের আগে ঘরে চলে যাবে ^, এটিও একটি^ , সুতরাং প্রোগ্রামটি শিফ্ট দ্বারা প্রভাবিত হয় না।

অবশেষে, কোনও সদৃশ লাইনফিড অক্ষরও স্ট্রিংকে পরিবর্তন করবে। সংক্ষিপ্ত রেখাগুলি ফাঁকা জায়গায় প্যাড করা হয়, তাই লাইনফিডের অবস্থানে একটি 32 / স্পেস .োকানো হবে। স্থানের জন্য 1 টি84*= চাপ দেবে , সুতরাং পরবর্তী নির্দেশনা এড়িয়ে চলবে না। এই ক্ষেত্রে, পপগুলি এবং স্থানটি ত্যাগ করে , সুতরাং নিম্নলিখিতটি পরিবর্তে স্থানের উপরের অক্ষরটি মুদ্রণ করবে ।?~o


আপনি যে কোনও নতুন লাইনের সদৃশ করতে পারেন এবং এটি এখনও কার্যকর হবে।
ডেনিস

3
ওহ, আমি পোস্টটি সঠিকভাবে পড়িনি: পি (দামি ডেনিস, আপনি এত ভালো কেন)
ক্লাইমিক


@ jimmy23013 ঠিক করা উচিত।
ডেনিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.