52 48 বাইট
./@$0<$
21\./01
..>..!\
@
.<..<\
20//\11
@01$00@
এটি অনলাইন চেষ্টা করুন!
পরীক্ষামূলক চালক
ব্যাখ্যা
ক্লিনে আইপি ডানদিকে যাচ্ছে উপরের বাম কোণে শুরু হয়। আমি আমার প্রোগ্রামটি যে প্রথম পদক্ষেপটি করতে চেয়েছিলাম তা হ'ল প্রথম এবং তৃতীয় বিট নির্ধারণের জন্য প্রোগ্রামটির শীর্ষে আইপি প্রেরণ করা। টপোলজির উপর নির্ভর করে আইপি প্রোগ্রামটি পুনরায় প্রবেশ করবে:
^
I|P
./.....
201, 211 -->.......<-- 100, 110
.......
.......
.......
200, 210 -->.......<-- 101, 111
.......
^ ^
| |
000 001
010 011
আমি স্থির করেছি যে আমার প্রোগ্রামটি টপোলজির তৃতীয় বিটটি দ্বিতীয় বিটের আগে রেকর্ড করবে $
তবে শেষ হওয়ার আগে সেগুলি (ব্যবহার করে ) অদলবদল করবে । সে লক্ষ্যে আমি উপরে বর্ণিত আইপি-র প্রবেশের পয়েন্টগুলিতে প্রতিটি টোপোলজির প্রথম এবং তৃতীয় বিটগুলি পুশ করার জন্য কোড যুক্ত করেছি।
./.....
21...01
.......
.......
.......
20...11
.0...0.
এরপরে আমি টপোলজগুলিতে তাদের প্রথম বিটটির সাথে 1
বা 2
হিসাবে ফোকাস করেছি । আমি তাদের পুনরায় সমন্বিত করার সিদ্ধান্ত নিয়েছি এবং উত্তর দিকের সাথে সংযুক্ত না করে পাশের দিকে তাদের পাঠিয়ে দেব যাতে আমি তাদের দ্বিতীয় বিটটি নির্ধারণ করতে পারি।
./.....
21\./01
..>....--> 200, 201, 210, 211
.......
100, 101, 110, 111 <--....<..
20/.\11
.0...0.
^ ^
| |
/ \
110 100
111 101
210 200
211 201
সুবিধাজনকভাবে এটি তাদের দ্বিতীয় বিট দ্বারা টোপোলজিকে পুনরায় গোষ্ঠীভুক্ত করেছিল যাতে আমি এটিকে স্ট্যাকের দিকে ঠেলে দিতে পারি।
./.....
21\./01
..>....
.......
....<..
20/.\11
.01.00.
এর পরে আমার কেবল দ্বিতীয় এবং তৃতীয় বিট অদলবদল করতে হবে এবং প্রোগ্রামটি শেষ করতে হবে।
./.$...
21\./01
..>....
@......
....<..
20//\11
.01$00.
এখন টপোলজিসগুলি তাদের প্রথম বিট হিসাবে 1
বা 2
হিসাবে কাজ করেছে, আমি 0
সঠিক আউটপুট দেওয়ার সাথে টপোলজগুলি তৈরি করতে ফোকাস করতে পারি । প্রথম পদক্ষেপটি তাদের পুনরায় সংযুক্ত করছিল যাতে তারা তাদের দ্বিতীয় বিটের ভিত্তিতে দুটি গ্রুপে বিভক্ত হতে পারে।
./.$...
21\./01
..>....<-- 010, 011
@......
000, 001, 010, 011 <--.<..<<.<-- 000, 001
20//\11
.01$00.
আমি প্রথম সেই টপোলজগুলিতে 1
তাদের দ্বিতীয় বিট হিসাবে ফোকাস করেছি । এগুলি একটি চ্যালেঞ্জ উপস্থাপন করেছে কারণ তাদের জন্য আইপি টপোলজিকরা 2
তাদের প্রথম বিট হিসাবে ইতিমধ্যে ব্যবহৃত লাইনে ছিল । যেহেতু line লাইনে একাধিক নির্দেশাবলীর পক্ষে ফিট করা কঠিন হবে (নির্দেশটি ব্যবহার করে একটি একক নির্দেশ লাফানো যায় !
) এবং আমি পুরো জায়গাতেই কম চলছিলাম, তাই আমি সিদ্ধান্ত নিয়েছি যে লাইনটি আইপিটি পুনর্নির্দেশ করে একটি বিদ্যমান 1
নির্দেশ পুনরায় ব্যবহার করতে হবে দ্বিতীয় বিট ধাক্কা।
./.$...
21\./01
..>..!\
@......
.<..<<.
20//\11
.01$00.
1
তাদের দ্বিতীয় বিট হিসাবে টপোলজিসের জন্য এখন যা করা ছিল তা হ'ল দ্বিতীয় এবং তৃতীয় বিটের ক্রম স্থির করে শেষ করা।
^
|
./.$..$
21\./01
..>..!\
@......
.<..<<.
20//\11
@01$00@
^ ^
| |
011 010
শেষ পর্যন্ত 0
তাদের দ্বিতীয় বিট হিসাবে টপোলজিসে রয়ে গেল । প্রোগ্রামটিতে খুব বেশি স্থান অবশিষ্ট ছিল না যেখানে বৃহত্তম অব্যবহৃত স্থান শীর্ষ লাইনে ছিল তাই এটি সেখানে ছিল যে আমি টপোলজির জন্য 0
তাদের দ্বিতীয় বিট হিসাবে আইপি পুনর্নির্দেশ করলাম ।
./.$.<$
21\./01
..>..!\
@......
.<..<\.
20//\11
@01$00@
আমার এখনও 0
দ্বিতীয় বিটের জন্য চাপ দেওয়া এবং দ্বিতীয় এবং তৃতীয় বিটের ক্রম ঠিক করার পাশাপাশি প্রোগ্রামটি শেষ করার দরকার ছিল। ভাগ্যক্রমে, আমি একটি বিদ্যমান $
নির্দেশ পুনরায় ব্যবহার করতে সক্ষম হয়েছিলাম যাতে নির্দেশাবলী 0
এবং @
বাকি জায়গাগুলিতে ফিট করে।
./@$0<$
21\./01
..>..!\
@......
.<..<\.
20//\11
@01$00@
চূড়ান্ত প্রোগ্রামটি পাওয়ার জন্য অবশেষে ন্যাপগুলি লাইনগুলির প্রান্ত থেকে ছিনিয়ে নেওয়া যায়।