*(>:^]*(*>{<-!<:^>[:((-<)<(<!-)>>-_)_<<]>:]<]]}*<)]*(:)*=<*)>]
-ln
কমান্ড-লাইন পতাকাগুলি (তাই +4 বাইট) দিয়ে চালানো দরকার । 0
সম্মিলিত সংখ্যা এবং 1
প্রাইমগুলির জন্য মুদ্রণ ।
এটি অনলাইন চেষ্টা করুন!
আমি মনে করি এটি প্রথম অ-তুচ্ছ স্ট্যাক বিড়াল প্রোগ্রাম।
ব্যাখ্যা
একটি দ্রুত স্ট্যাক বিড়াল পরিচয়:
- স্ট্যাক বিড়ালগুলি স্ট্যাকের অসীম টেপটিতে চালিত হয়, একটি টেপ মাথা একটি বর্তমান স্ট্যাকের দিকে নির্দেশ করে। প্রতিটি স্ট্যাক শুরুতে অসীম পরিমাণ জিরো দিয়ে পূর্ণ হয়। আমি সাধারণত আমার কথার মধ্যে এই শূন্যগুলিকে অগ্রাহ্য করব, সুতরাং যখন আমি "স্ট্যাকের নীচে" বলি তখন আমি সর্বনিম্ন নন-শূন্য মানটি বোঝাই এবং যদি আমি "স্ট্যাকটি খালি হয়" বলতে চাই তবে তার মানে কেবলমাত্র শূন্য রয়েছে।
- প্রোগ্রামটি শুরুর আগে একটি
-1
প্রাথমিক স্ট্যাকের দিকে ধাক্কা দেওয়া হয় এবং তারপরে পুরো ইনপুটটিকে ধাক্কা দেওয়া হয়। এই ক্ষেত্রে, -n
পতাকার কারণে , ইনপুটটি দশমিক পূর্ণসংখ্যা হিসাবে পড়ে।
- প্রোগ্রাম শেষে, বর্তমান স্ট্যাক আউটপুট জন্য ব্যবহৃত হয়। নীচে যদি একটি
-1
থাকে তবে তা উপেক্ষা করা হবে। আবার -n
পতাকাটির কারণে , স্ট্যাকের মানগুলি কেবল লাইনফিড-বিচ্ছিন্ন দশমিক পূর্ণসংখ্যার হিসাবে মুদ্রিত হয়।
- স্ট্যাক বিড়ালগুলি একটি বিপরীত প্রোগ্রামের ভাষা: কোডের প্রতিটি টুকরোটি পূর্বাবস্থায় ফেলা যায় (স্ট্যাক বিড়াল কোনও স্পষ্ট ইতিহাসের সন্ধান না করে)। আরো নির্দিষ্টভাবে, কোডের কোন টুকরা বিপরীত, তবে আপনি এটিকে কেবল মিরর, যেমন
<<(\-_)
হয়ে (_-/)>>
। এই নকশার লক্ষ্যটি ভাষাতে কোন ধরণের অপারেটর এবং নিয়ন্ত্রণ প্রবাহের কাঠামো বিদ্যমান এবং বিশ্বব্যাপী স্মৃতি অবস্থার উপর আপনি কী ধরণের ক্রিয়াগুলি গণনা করতে পারেন তার উপর যথেষ্ট কঠোর বিধিনিষেধ সৃষ্টি করে।
এটি সর্বোপরি, প্রতিটি স্ট্যাক বিড়াল প্রোগ্রাম স্ব-প্রতিসাম্য হতে হবে। আপনি লক্ষ্য করতে পারেন যে এটি উপরের উত্স কোডের ক্ষেত্রে নয়। এই কি -l
পতাকার: এটি পরোক্ষভাবে, বাম কোড প্রতিফলিত কেন্দ্রের প্রথম অক্ষর ব্যবহার করে। সুতরাং আসল প্রোগ্রামটি হ'ল:
[<(*>=*(:)*[(>*{[[>[:<[>>_(_-<<(-!>)>(>-)):]<^:>!->}<*)*[^:<)*(>:^]*(*>{<-!<:^>[:((-<)<(<!-)>>-_)_<<]>:]<]]}*<)]*(:)*=<*)>]
পুরো কোডটির সাথে কার্যকরভাবে প্রোগ্রামিং করা অত্যন্ত তুচ্ছ এবং স্বল্প ও অবিচ্ছিন্ন এবং সম্ভবত কোনও মানুষ কীভাবে এটি করতে পারে তা এখনও খুঁজে পাওয়া যায়নি। আমরা নিখুঁতভাবে সহজ কর্মের জন্য এই জাতীয় প্রোগ্রামকে বাধ্য করেছি , তবে হাতের কাছে কোথাও পৌঁছতে পারতাম না। ভাগ্যক্রমে, আমরা একটি প্রাথমিক প্যাটার্ন পেয়েছি যা আপনাকে প্রোগ্রামের অর্ধেক উপেক্ষা করতে দেয়। যদিও এটি অবশ্যই সাবমোটিমাল, এটি বর্তমানে স্ট্যাক বিড়ালগুলিতে কার্যকরভাবে প্রোগ্রাম করার একমাত্র উপায়।
সুতরাং এই উত্তরে, উল্লিখিত প্যাটার্নের টেম্পলেটটি এটি (এটি কীভাবে কার্যকর হয় তার কিছু পরিবর্তনশীলতা রয়েছে):
[<(...)*(...)>]
প্রোগ্রামটি শুরু হওয়ার পরে, স্ট্যাক টেপটি দেখতে এরকম দেখাচ্ছে (ইনপুটটির জন্য 4
, বলুন):
4
... -1 ...
0
^
[
প্যাচসমূহ বাঁদিকে স্ট্যাকের উপরে (এবং বরাবর টেপ মাথা) - আমরা কল এই "ঠেলাঠেলি"। এবং <
টেপ মাথা একা সরানো। প্রথম দুটি কমান্ডের পরে, আমরা এই পরিস্থিতি পেয়েছি:
... 4 -1 ...
0 0 0
^
এখন এটি (...)
একটি লুপ যা শর্তসাপেক্ষ হিসাবে বেশ সহজেই ব্যবহার করা যেতে পারে: বর্তমান স্ট্যাকের শীর্ষটি ইতিবাচক হলে লুপটি প্রবেশ করা হয় এবং ছেড়ে দেওয়া হয়। যেহেতু, এটি বর্তমানে শূন্য, আমরা প্রোগ্রামের প্রথমার্ধটি এড়িয়ে চলেছি। এখন সেন্টার কমান্ডটি *
। এই কেবল হয় XOR 1
, অর্থাত্ এটা স্ট্যাকের উপরে অন্তত গুরুত্বপূর্ণ বিট টগল, এবং এই ক্ষেত্রে সক্রিয় 0
একটি মধ্যে 1
:
... 1 4 -1 ...
0 0 0
^
এখন আমরা এর আয়না চিত্র সম্মুখীন (...)
। এই সময় স্ট্যাক উপরের ইতিবাচক এবং আমরা কি কোডটি লিখুন। প্রথম বন্ধনীগুলির মধ্যে কী চলছে তা খতিয়ে দেখার আগে, আমাকে বোঝাতে দিন যে আমরা কীভাবে শেষ করে ফেলব: আমরা এই বিষয়টি নিশ্চিত করতে চাই যে এই ব্লকের শেষে, আমাদের আবার টেস্টের মাথাটি ইতিবাচক মানের রয়েছে (যাতে লুপ একটি একক পুনরাবৃত্তির পর শেষ হয় এবং একটি রৈখিক শর্তসাপেক্ষ যেমন কেবল ব্যবহার করা হয়), যে ডানদিকে স্ট্যাক আউটপুট ঝুলিতে এবং স্ট্যাকের ঠিক যে একটি ঝুলিতে -1
। যদি এটি হয় তবে আমরা লুপটি ছেড়ে দেই না, >
আউটপুট মানটির দিকে চলে যাই এবং ]
এটিতে ধাক্কা দেয় -1
যাতে আউটপুট জন্য আমাদের একটি পরিষ্কার স্ট্যাক থাকে।
এটাই ঐটা. এখন প্রথম বন্ধনের অভ্যন্তরে আমরা যতক্ষণ না আমরা পূর্ববর্তী অনুচ্ছেদে বর্ণিত জিনিসগুলি সেট আপ করেছি (যা সহজেই কিছু ঠেলাঠেলি এবং টেপ হেড মুভিং দিয়ে সম্পন্ন করা যেতে পারে) সেট করে নিই তা নিশ্চিত করি যতক্ষণ না আমরা প্রারম্ভিকতা যাচাই করতে চাই যতক্ষণ করতে পারি can আমি প্রথমে উইলসনের উপপাদ্যটি দিয়ে সমস্যাটি সমাধান করার চেষ্টা করেছি তবে 100 বাইটেরও বেশি ভালভাবে শেষ করেছি, কারণ স্ট্যাক বিড়ালগুলিতে স্কোয়ার্ড ফ্যাক্টরিয়াল গণনাটি আসলে বেশ ব্যয়বহুল (কমপক্ষে আমি কোনও ছোট পথ খুঁজে পাইনি)। সুতরাং আমি পরিবর্তে ট্রায়াল বিভাগের সাথে গিয়েছিলাম এবং এটি প্রকৃতপক্ষে আরও সহজ সরল। আসুন প্রথম লিনিয়ার বিটটি দেখুন:
>:^]
ইতিমধ্যে আপনি এই দুটি কমান্ড দেখেছেন। উপরন্তু, :
বর্তমান স্ট্যাকের উপরে দুইটি মানের বিনিময়সমূহ এবং ^
শীর্ষ মান মধ্যে দ্বিতীয় মান XORs। এটি :^
একটি শূন্য স্ট্যাকের কোনও মান নকল করতে একটি সাধারণ প্যাটার্ন তৈরি করে (আমরা মানটির উপরে একটি শূন্য টানি এবং তারপরে শূন্যকে রূপান্তর করি 0 XOR x = x
)। সুতরাং এটির পরে, বিভাগটি আমাদের টেপটিকে এমন দেখাচ্ছে:
4
... 1 4 -1 ...
0 0 0
^
আমি প্রয়োগ করা ট্রায়াল বিভাগের অ্যালগরিদম ইনপুটটির জন্য কাজ করে না 1
, তাই আমাদের সেই ক্ষেত্রে কোডটি এড়ানো উচিত। আমরা সহজেই এবং অন্য যে কোনও কিছু দিয়ে ইতিবাচক মানগুলিতে মানচিত্র 1
করতে 0
পারি *
, তাই আমরা কীভাবে করব তা এখানে রয়েছে:
*(*...)
যে আমরা পালা 1
মধ্যে 0
, কোড একটা বড় অংশ লাফালাফি যদি আমরা প্রকৃতপক্ষে পেতে 0
, কিন্তু ভিতরে আমরা অবিলম্বে পূর্বাবস্থা *
যাতে আমরা আমাদের ইনপুট মান ফিরুন। আমাদের কেবল আবার এটি নিশ্চিত করা দরকার যে আমরা প্রথম বন্ধনীগুলির শেষে একটি ইতিবাচক মান নিয়ে এসেছি যাতে তারা লুপিং শুরু না করে। শর্তসাপেক্ষে, আমরা একটি স্ট্যাকটি ডানদিক দিয়ে সরান >
এবং তারপরে মূল ট্রায়াল বিভাগ লুপটি শুরু করি:
{<-!<:^>[:((-<)<(<!-)>>-_)_<<]>:]<]]}
ধনুর্বন্ধনী (প্রথম বন্ধনীগুলির বিপরীতে) একটি ভিন্ন ধরণের লুপ সংজ্ঞায়িত করে: এটি একটি ডু-ওয়েল লুপ, যার অর্থ এটি সর্বদা কমপক্ষে একটি পুনরাবৃত্তির জন্য চলে। অন্য পার্থক্যটি সমাপ্তির শর্ত: লুপে প্রবেশের সময় স্ট্যাক বিড়াল বর্তমান স্ট্যাকের শীর্ষ মান মনে করে ( 0
আমাদের ক্ষেত্রে)। লুপটি তখন চলবে যতক্ষণ না কোনও পুনরাবৃত্তির শেষে একই মানটি আবার দেখা না যায়। এটি আমাদের জন্য সুবিধাজনক: প্রতিটি পুনরাবৃত্তিতে আমরা কেবলমাত্র পরবর্তী সম্ভাব্য বিভাজকের বাকী অংশটি গণনা করি এবং এটিকে স্ট্যাকের উপরে সরিয়ে আমরা লুপটি চালু করি starting যখন আমরা কোনও বিভাজনকারী পাই, তখন বাকীটি থাকে 0
এবং লুপটি বন্ধ হয়ে যায়। আমরা বিভাজনকারীদের শুরু করে চেষ্টা করব n-1
এবং তারপরে সেগুলি হ্রাস করব 1
। এর অর্থ ক) আমরা জানি আমরা পৌঁছালে এটি শেষ হবে1
সর্বশেষে এবং খ) আমরা তারপরে আমরা চেষ্টা করেছিলাম এমন শেষ বিভাজকটি পরীক্ষা করে (যদি এটি হয় তবে এটি সেক্ষেত্রে সংখ্যাটি প্রধান কিনা তা নির্ধারণ করতে পারি1
, এটি প্রধান, অন্যথায় এটি নয়) isn't
আসুন এটি পেতে। শুরুতে একটি সংক্ষিপ্ত রৈখিক বিভাগ রয়েছে:
<-!<:^>[:
আপনি জানেন যে এই সময়ের মধ্যে বেশিরভাগ কী করে do নতুন কমান্ডগুলি হ'ল -
এবং !
। স্ট্যাক বিড়ালগুলির ইনক্রিমেন্ট বা হ্রাস অপারেটর নেই। তবে এটির -
(অবহেলা, অর্থাত্ গুণ দ্বারা -1
) এবং !
(বিটওয়াইজ নট, অর্থাত্ গুণফল -1
এবং হ্রাস) রয়েছে। এগুলিকে হয় একটি ইনক্রিমেন্ট !-
, বা হ্রাসের সাথে একত্রিত করা যেতে পারে -!
। সুতরাং আমরা এর n
উপরে থাকা অনুলিপিটি হ্রাস করব -1
, তার পরে n
স্ট্যাকের বাম দিকে অন্য একটি অনুলিপি তৈরি করুন, তারপরে নতুন ট্রায়াল ডিভাইডারটি আনুন এবং এটি নীচে রাখুন n
। সুতরাং প্রথম পুনরাবৃত্তিতে, আমরা এটি পেয়েছি:
4
3
... 1 4 -1 ...
0 0 0
^
আরও পুনরাবৃত্তিতে, 3
পরের পরীক্ষার বিভাজক এবং এর সাথে প্রতিস্থাপন করা হবে (যেখানে দুটি কপি n
সর্বদা এই সময়ে একই মান হবে)।
((-<)<(<!-)>>-_)
এটি হল মডুলো গণনা। যেহেতু লুপগুলি ইতিবাচক মানগুলিতে সমাপ্ত হয়, তাই ধারণাটি হ'ল আমরা ইতিবাচক মান না পাওয়া পর্যন্ত এটিতে -n
ট্রায়াল বিভাজকটি পুনরায় শুরু করা এবং বারবার যুক্ত করা d
। একবার আমরা এটি করার পরে, আমরা ফলাফলটি বিয়োগ করি d
এবং এটি আমাদের বাকীটি দেয়। এখানে জটিল কিছুটি হ'ল আমরা কেবল -n
স্ট্যাকের উপরে একটি উপরে রাখা এবং একটি লুপ শুরু করতে পারি না যা যুক্ত করে d
: যদি স্ট্যাকের শীর্ষটি নেতিবাচক হয় তবে লুপটি প্রবেশ করা হবে না। এগুলি একটি বিপরীত প্রোগ্রামিং ভাষার সীমাবদ্ধতা।
সুতরাং এই সমস্যাটি রোধ করার জন্য, আমরা n
স্ট্যাকের শীর্ষে শুরু করি , তবে এটি কেবল প্রথম পুনরাবৃত্তিতেই উপেক্ষা করি । আবার, এটি দেখতে আরও সহজ মনে হচ্ছে ...
(-<)
যখন স্ট্যাকের শীর্ষটি ইতিবাচক হয় (যেমন শুধুমাত্র প্রথম পুনরাবৃত্তির উপরে), আমরা এটির সাথে এটি প্রত্যাখ্যান করি -
। যাইহোক, আমরা শুধু ব্যবহার করতে পারবেন না (-)
কারণ তাহলে আমরা হবে না ছাড়ার লুপ পর্যন্ত -
দুইবার প্রয়োগ করা হয়েছে। সুতরাং আমরা একটি কক্ষটি বামে সরিয়ে নিয়েছি <
কারণ আমরা জানি যে সেখানে একটি ইতিবাচক মান রয়েছে ( 1
))। ঠিক আছে, তাই এখন আমরা n
প্রথম পুনরাবৃত্তির উপর নির্ভরযোগ্যভাবে অবহেলা করেছি । তবে আমাদের একটি নতুন সমস্যা রয়েছে: টেপ মাথাটি এখন অন্য প্রতিটিগুলির চেয়ে প্রথম পুনরাবৃত্তির ক্ষেত্রে আলাদা অবস্থানে রয়েছে। আমাদের এগিয়ে যাওয়ার আগে আমাদের এটি একীভূত করতে হবে। পরবর্তী <
টেপ মাথা বাম সরানো। প্রথম পুনরাবৃত্তির পরিস্থিতি:
-4
3
... 1 4 -1 ...
0 0 0 0
^
এবং দ্বিতীয় পুনরাবৃত্তিতে (মনে রাখবেন আমরা এখন d
একবারে যুক্ত করেছি -n
):
-1
3
... 1 4 -1 ...
0 0 0
^
পরবর্তী শর্তাধীন আবার এই পাথগুলিকে একত্রিত করে:
(<!-)
প্রথম পুনরাবৃত্তিতে টেপ মাথাটি শূন্যের দিকে নির্দেশ করে, তাই এটি পুরোপুরি এড়িয়ে যায়। আরও পুনরাবৃত্তির উপর, টেপ মাথাটি একবারে পয়েন্ট করে, সুতরাং আমরা এটি সম্পাদন করব, বাম দিকে সরে যাই এবং সেখানে ঘর বৃদ্ধি করি। যেহেতু আমরা জানি যে ঘরটি শূন্য থেকে শুরু হয়, এখন এটি সর্বদা ইতিবাচক হবে তাই আমরা লুপটি ছেড়ে যেতে পারি। এটি নিশ্চিত করে যে আমরা সবসময় মূল স্ট্যাকের দুটি স্ট্যাক বামে শেষ করি এবং এখনই ফিরে যেতে পারি >>
। তারপরে মডিউল লুপ শেষে আমরা করি -_
। আপনি ইতিমধ্যে জানেন -
। _
এক্সওআর কে কী বিয়োগ তা ^
হল: যদি স্ট্যাকের শীর্ষটি হয় a
এবং নীচের মানটি b
এটি প্রতিস্থাপন a
করে b-a
। যেহেতু আমরা প্রথমে a
যদিও -_
অবহেলা a
করেছি b+a
, এর সাথে প্রতিস্থাপন করে , এর সাথে যুক্ত করছিd
আমাদের চলমান মোট মধ্যে।
লুপটি শেষ হওয়ার পরে (আমরা একটি ইতিবাচক পৌঁছেছি) মানটি টেপটিকে দেখে মনে হচ্ছে:
2
3
... 1 1 4 -1 ...
0 0 0 0
^
বাম-সর্বাধিক মান কোনও ধনাত্মক সংখ্যা হতে পারে। আসলে, এটি পুনরাবৃত্তির সংখ্যা বিয়োগ এক। এখন আর একটি ছোট লিনিয়ার বিট আছে:
_<<]>:]<]]
আমি আগে যেমন বলেছিলাম d
আসল অবশিষ্ট ( 3-2 = 1 = 4 % 3
) প্রাপ্ত করার জন্য আমাদের ফলাফলটি বিয়োগ করা দরকার , সুতরাং আমরা _
আরও একবার করলাম do এরপরে, আমাদের বাম দিকে বৃদ্ধি করা স্ট্যাকটি পরিষ্কার করতে হবে: আমরা যখন পরবর্তী বিভাজকটি চেষ্টা করি তখন প্রথম পুনরাবৃত্তির কাজ করার জন্য এটি আবার শূন্য হওয়া দরকার। সুতরাং আমরা সেখানে স্থানান্তরিত করি এবং সেই ধনাত্মক মানটিকে অন্য সহায়ক সহায়ক স্ট্যাকের সাথে চাপি <<]
এবং তারপরে অন্যটির সাথে আমাদের অপারেশনাল স্ট্যাকের দিকে ফিরে যাই >
। আমরা মুঠি ধরে টেনে তুলবো d
সঙ্গে :
নিজের গ্রামে ফিরে ধাক্কা সম্মুখের -1
সঙ্গে ]
এবং তারপর আমরা আমাদের শর্তসাপেক্ষ স্ট্যাকের সম্মুখের বাকি সরানো <]]
। এটি ট্রায়াল বিভাগের লুপের সমাপ্তি: এটি শূন্যের অব্যাহত না পাওয়া পর্যন্ত অব্যাহত থাকে, যার ক্ষেত্রে বামদিকে স্ট্যাক থাকেn
সবচেয়ে বড় বিভাজক (ব্যতীত n
)।
লুপটি শেষ হওয়ার পরে, *<
আমরা 1
আবার ইনপুট দিয়ে পাথে যোগদানের ঠিক আগে । *
কেবল একটি মধ্যে শূন্য সক্রিয় 1
, যা আমরা কিছুক্ষনের মধ্যে প্রয়োজন হবে, এবং তারপর আমরা সঙ্গে ভাজক সরাতে <
(যাতে আমরা ইনপুট জন্য হিসাবে একই স্ট্যাক করছি 1
)।
এই সময়ে এটি তিনটি বিভিন্ন ধরণের ইনপুট তুলনা করতে সহায়তা করে। প্রথমত, বিশেষ ক্ষেত্রে n = 1
যেখানে আমরা সেই ট্রায়াল বিভাগের কোনও কাজই করি নি:
0
... 1 1 -1 ...
0 0 0
^
তারপরে, আমাদের পূর্ববর্তী উদাহরণ n = 4
, একটি সংমিশ্রণ সংখ্যা:
2
1 2 1
... 1 4 -1 1 ...
0 0 0 0
^
এবং অবশেষে, n = 3
একটি প্রধান সংখ্যা:
3
1 1 1
... 1 3 -1 1 ...
0 0 0 0
^
প্রাথমিক সংখ্যাগুলির জন্য, আমাদের 1
এই স্ট্যাকের উপর একটি রয়েছে, এবং সংমিশ্রিত সংখ্যার জন্য আমাদের হয় হয় 0
বা তার চেয়ে ধনাত্মক সংখ্যা বেশি 2
। আমরা নিম্নলিখিত অবস্থার কোডটি দিয়ে আমাদের এই পরিস্থিতিটি রূপান্তর করি 0
বা 1
আমাদের প্রয়োজন:
]*(:)*=<*
]
এই মানটি ডানদিকে ঠেলে দেয়। এরপরে *
শর্তাধীন পরিস্থিতিটি সহজতর করতে ব্যবহৃত হয়: কমপক্ষে উল্লেখযোগ্য বিটটি টগল করে আমরা 1
(প্রাইম) 0
, 0
(সংমিশ্রিত) ধনাত্মক মানে রূপান্তরিত করি 1
এবং অন্যান্য সমস্ত ধনাত্মক মানগুলি এখনও ইতিবাচক থাকবে। এখন আমাদের কেবল 0
ধনাত্মক এবং ধনাত্মক পার্থক্য করা প্রয়োজন । আমরা যেখানে অন্য একটি ব্যবহার (:)
। যদি স্ট্যাকের শীর্ষটি হয় 0
(এবং ইনপুটটি একটি প্রধান ছিল), এটি কেবল এড়ানো যায়। তবে যদি স্ট্যাকের শীর্ষটি ইতিবাচক হয় (এবং ইনপুটটি একটি যৌগিক সংখ্যা ছিল) এটি এটির সাথে অদলবদল করে 1
, যাতে এখন আমাদের 0
সংমিশ্রিত এবং1
প্রাইমগুলির জন্য - কেবল দুটি স্বতন্ত্র মান। অবশ্যই, আমরা যা আউটপুট করতে চাই তার বিপরীতে, তবে এটি অন্যটির সাথে সহজেই স্থির হয়ে গেছে *
।
এখন যে সব বাম আসুন আমাদের পার্শ্ববর্তী কাঠামোর দ্বারা প্রত্যাশিত স্ট্যাকগুলি ধরনে পুনঃস্থাপন হল: একটি পজিটিভ মূল্যের ওপর টেপ মাথা ডানদিকে স্ট্যাকের উপর স্থাপিত, এবং একটি একক -1
স্ট্যাক ডান দিকে যে । এই কি =<*
জন্য হয়। =
দুটি সংলগ্ন স্ট্যাকের শীর্ষগুলি অদলবদল করে, -1
ফলস্বরূপ ডানদিকে সরানো , যেমন 4
: ইনপুটটির জন্য আবার:
2 0
1 3
... 1 4 1 -1 ...
0 0 0 0 0
^
তারপরে আমরা কেবল বাম দিকে সরে যাই <
এবং সেই শূন্যটিকে একটিতে পরিণত করি *
। এবং এটি।
আপনি যদি প্রোগ্রামটি কীভাবে আরও গভীরভাবে খনন করতে চান তবে আপনি ডিবাগ বিকল্পগুলি ব্যবহার করতে পারেন। হয় -d
পতাকা যুক্ত করুন এবং "
যেখানে আপনি বর্তমান মেমরির অবস্থাটি দেখতে চান সেখানে sert োকান, যেমন এর মতো , বা পুরো প্রোগ্রামটির সম্পূর্ণ ট্রেস পেতে-D
পতাকাটি ব্যবহার করুন । বিকল্পভাবে, আপনি টিমবির এসোটেরিসিড ব্যবহার করতে পারেন যার মধ্যে স্টেপ বিট ইন্টারপ্রেটার একটি ধাপে ধাপে ডিবাগারের সাথে রয়েছে।