-X
এটি অনলাইন চেষ্টা করুন!
বিপরীত চেষ্টা করুন!
ব্যাখ্যা
দেখা যাচ্ছে এটি স্ট্যাক বিড়ালের আগের চ্যালেঞ্জের চেয়ে অনেক সহজ। সম্পূর্ণ প্রোগ্রাম (আবেদনের পরে -m
) এখানে -X-
। X
টেপ মাথার বাম এবং ডান স্ট্যাকগুলি অদলবদল করতে ব্যবহৃত হয়, যেমন এটি প্রাথমিক স্ট্যাকের মোটেও ক্ষতি করে না, তাই আমরা এটিকে উপেক্ষা করতে পারি। তবে তারপরে প্রোগ্রামটি কার্যকরভাবে কার্যকর--
(স্ট্যাকের শীর্ষটিকে দু'বার উপেক্ষা করুন), যা কিছুই করে না।
বিপরীত প্রোগ্রামের জন্য, আবেদন -m
দেয় X-X
। আবার, X
কিছুই করে না, সুতরাং প্রোগ্রামটি কার্যকরভাবে কার্যকর -
, যা স্ট্যাকের শীর্ষটিকে উপেক্ষা করে।
কেবলমাত্র 2-বাইট সমাধানই -=
তবে এটি কার্যত একই। পার্থক্যটি হ'ল =
পুরো স্ট্যাকগুলিই নয়, পার্শ্ববর্তী স্ট্যাকগুলির কেবলমাত্র শীর্ষগুলি অদলবদল করে।
কিন্তু আবার, ব্যবহার -m
কিছুটা প্রতারণার মতো অনুভূত সুতরাং নীচে একটি সমাধান যা সম্পূর্ণরূপে মিররযুক্ত প্রোগ্রাম ব্যবহার করে।
:I<->I:
এটি অনলাইন চেষ্টা করুন!
বিপরীত চেষ্টা করুন!
ব্যাখ্যা
পূর্ববর্তী উত্তরের বিবেচনাগুলি এখনও প্রয়োগ হয় : যে কোনও বৈধ সমাধানের জন্য জোড়যুক্ত অক্ষর এবং ব্যবহার করা দরকার I
। সম্ভাব্য ছয়টি সমাধান (টিআইও লিঙ্কের অন্তর্ভুক্ত) সমস্ত কার্যত একই। -
এবং _
এই প্রোগ্রামে সমতুল্য, এবং :
দ্বারা প্রতিস্থাপিত হতে পারে |
বাT
(যা শূন্য-ইনপুটগুলির জন্য একই কাজ করে এবং কাকতালীয়ভাবে শূন্য ইনপুটগুলির জন্যও কাজ করে)। আমি কেবল এটি ব্যাখ্যা করতে বেছে নিয়েছি কারণ এটি সবচেয়ে সহজ।
সুতরাং মনে রাখবেন যে প্রাথমিক স্ট্যাকটি একটি -1
(শীর্ষে অনেকগুলি শূন্যের উপরে) এর উপরে ইনপুট রাখে যেখানে টেপ বরাবর অন্যান্য সমস্ত স্ট্যাক কেবল জিরো ধারণ করে। স্ট্যাক বিড়ালদের এমন সম্পত্তিও রয়েছে যে কোনও সম-দৈর্ঘ্যের প্রোগ্রামটি কিছুই করে না (তবে এটি সমাপ্ত হয়ে যায় তবে আমরা যেভাবে এই চ্যালেঞ্জের জন্য লুপগুলি ব্যবহার করতে পারি না)। এটি একইরকম কোনও বেদ-দৈর্ঘ্যের প্রোগ্রামের জন্য অবশ্যই সত্য, যার কেন্দ্রের চরিত্রটি কিছুই করে না ... আসুন দেখা যাক:
: Swap the input with the -1 below.
I Move the -1 one stack to the left and turn it into +1.
< Move another stack left (without taking the value).
- Negate the zero on top of that stack (i.e. do nothing).
সুতরাং, প্রোগ্রামের দ্বিতীয়ার্ধটি ঠিক প্রথম অর্ধেকটিকে পূর্বাবস্থায় ফেলে দেয় এবং আমরা একটি এর উপরে ইনপুট দিয়ে শেষ করি -1
আবার ।
বিপরীত প্রোগ্রাম হয় :I>-<I:
। আসুন দেখুন কীভাবে এটি জিনিসগুলিকে পরিবর্তন করে:
: Swap the input with the -1 below.
I Move the -1 one stack to the left and turn it into +1.
> Move one stack right, i.e. back onto the initial stack which still holds the input.
- Negate the input.
< Move back to the left where we've parked the 1.
I Move that 1 back onto the initial stack and turn it back into a -1.
: Swap the -1 below the negated input to act as an EOF marker.