ল্যাবরেথ , 28 25 24 23 22 বাইট
" >
?!?:|}\{@
@\?"":)!
এই পাগল মজা ছিল! :) এটি এখন পর্যন্ত সবচেয়ে ঘন সংকীর্ণ ল্যাবরেথ প্রোগ্রাম যা আমি লিখেছি। আমার 20 এবং 21 বাইটে এমন অনেকগুলি সংস্করণ ছিল যা প্রায় কাজ করেছিল যে আমি এখনও সন্দেহ করছি এটিই সর্বোত্তম ...
এটি ইতিবাচক পূর্ণসংখ্যার (একটি স্বেচ্ছাসেবক ডিলিমিটার সহ) তালিকার হিসাবে ইনপুট নেয় এবং ফলাফলটি লাইনফিড-বিস্মৃত সংখ্যার হিসাবে প্রিন্ট করে ST
20/21 বাইটের জন্য অনুসন্ধান: আমি ফর্মের সমস্ত প্রোগ্রাম চেক করেছি
" XX
?!?X}\{@
@\?XX)!
X
নিষ্ঠুর বাহিনী দ্বারা কোন যুক্তিসঙ্গত চরিত্র যেখানে , কিন্তু কোন কার্যকর সমাধান খুঁজে পায় নি। অবশ্যই এর অর্থ এই নয় যে একটি সংক্ষিপ্ত সমাধানের অস্তিত্ব নেই, তবে 20-বাইট প্রোগ্রামকে এর কাঠামোর উপরে শালীন পরিমাণ অনুমান ছাড়া জোর করা সম্ভব নয়।
ব্যাখ্যা
(ব্যাখ্যাটি খানিকটা পুরানো, তবে আমি এখনও সমাধানটি সর্বোত্তম নয় বলে আমি নিশ্চিত নই, তাই আমি এটি আপডেট করে অপেক্ষা করব))
সুতরাং, সাধারণত লাইব্রের্থ প্রোগ্রামগুলি ম্যাজেসের মতো দেখায়। নির্দেশ পয়েন্টারটি যখন একটি করিডরে রয়েছে, এটি সেই করিডোরটি অনুসরণ করবে। আইপি যখন কোনও ধরণের জংশনকে আঘাত করে, তখন দিকটি ল্যাবরেথের প্রধান স্ট্যাকের শীর্ষ মানের উপর ভিত্তি করে নির্ধারিত হয় (ল্যাবরেথের দুটি স্তূপ রয়েছে, নীচে একটি অসীম পরিমাণ শূন্য রয়েছে)। এর সাধারণ অর্থ হ'ল যে কোনও অ-তুচ্ছ লুপটি বেশ ব্যয়বহুল হবে, কারণ আপনার যদি সমস্ত জায়গায় নন-ওয়াল কোষ থাকে তবে সমস্ত কিছু একটি জংশন এবং বেশিরভাগ ক্ষেত্রে স্ট্যাকের শীর্ষের আইপির জন্য সঠিক মান থাকবে না because আপনি যে পথটি নিতে চান তা অবলম্বন করতে। সুতরাং আপনি যা করেন তা কি আপনি লুপগুলি প্রসারিত করুন যেগুলি কেবলমাত্র একটির সুস্পষ্ট সংজ্ঞায়িত এন্ট্রি এবং প্রস্থান পয়েন্ট সহ কেন্দ্রের পুরো অংশে রয়েছে।
তবে এবার আমি সত্যিই ভাগ্যবান এবং সবকিছু এত ভালভাবে একসাথে ফিট হচ্ছিল যে আমি এগুলি সমস্ত বড় স্ক্র্যামে স্কোয়াশ করতে পারি। :)
নিয়ন্ত্রণ প্রবাহ _
দক্ষিণে চলছে। _
প্রধান স্ট্যাকের সম্মুখের একটি শূন্য push কর্মের। এটি কোনও অপ-বিকল্পের মতো বলে মনে হতে পারে তবে এটি 1
আমাদের পরে প্রয়োজন এমন (অব্যক্ত) স্ট্যাকের গভীরতা বৃদ্ধি করে ।
?
STDIN থেকে একটি পূর্ণসংখ্যা পড়ে। যদি পড়ার মতো আর কোনও পূর্ণসংখ্যা না থাকে তবে এটি শূন্যের দিকে ঠেলে দেয়। সেক্ষেত্রে আইপি দক্ষিণে অগ্রসর হয় এবং এই @
মুহুর্তে প্রোগ্রামটি বন্ধ করে দেয় (কারণ ইনপুট তালিকাটি খালি)। অন্যথায়, আইপি পূর্ব দিকে পরিণত হয়।
আমরা এখন দুটি বহির্গমন পয়েন্ট সহ একটি খুব টান লুপ প্রবেশ করছি:
!?;
\?
;
!
স্ট্যাকের উপরে কেবল একটি শূন্য রেখে, পূর্ণসংখ্যাটি STDOUT এ ফিরে যায়। আইপি পূর্ব দিকে অগ্রসর হয়, এবং ?
পরবর্তী পূর্ণসংখ্যা পড়ে। যদি তা শূন্য হয় না, তবে আমরা একটি ডান নিয়ে দক্ষিণে চলে যাই। ?
অন্য একটি পড়ে (পরের এমনকি সূচক)। আবার, যদি তা শূন্য হয় তবে আমরা একটি ডান নিয়ে পশ্চিম দিকে চলে যাই।
তারপরে \
স্ট্যাকটি পরিবর্তন না করেই একটি লাইনফিড মুদ্রণ করে, সুতরাং আমরা উত্তরে অন্যদিকে চলে যাব। !
প্রিন্ট করে যে পরের সম-সূচক পূর্ণসংখ্যার। যেহেতু এখন স্ট্যাকের মধ্যে কমপক্ষে একটি (ধনাত্মক) বিজোড়-সূচক পূর্ণসংখ্যা রয়েছে, তাই আমরা ডানদিকে ঘুরতে থাকি এবং লুপটি পুনরাবৃত্তি করে।
এইগুলির মধ্যে একবারে ?
তালিকার শেষে হিট হয়ে গেলে তারা একটি শূন্যকে ধাক্কা দেয় এবং সরাসরি সম্পর্কিত দিকে চলে যায় ;
, যা সেই শূন্যটিকে ছাড়িয়ে যায়।
তালিকায় কেবলমাত্র একটি একক উপাদান ছিল সে ক্ষেত্রে, আমরা সম্পন্ন করেছি (কারণ আমরা এখনই এটি প্রিন্ট করেছি), তাই আইপি পূর্বদিকে পুরোদিকে চলে যেতে থাকবে @
, আবার প্রোগ্রামটি সমাপ্ত করে (একটি ট্রেলিং মুদ্রণ করা) পথে লাইনফিড)।
অন্যথায়, আমাদের পাশাপাশি বিজোড়-সূচক পূর্ণসংখ্যার মুদ্রণ করা দরকার। সেক্ষেত্রে দুটি পাথ (প্রথম লুপের দুটি প্রস্থান পয়েন্ট থেকে) মাঝখানে মিশে যায় "
, উভয় ক্ষেত্রেই পূর্ব দিকে ঘুরে যায়।
_
একটি বাম দিকে রোধ করতে এড়াতে শূন্যের দিকে ঠেলে দেয় @
এবং সেই ;
শূন্যটিকে ছাড় দেয়। এখন আমরা একটি নতুন লুপ লিখুন:
"}
""
আইপি ঘড়ির কাঁটার দিক দিয়ে লুপের চারদিকে ঘুরে উত্তর দিকে চলে যাওয়া নীচে-বাম কক্ষে এটি প্রবেশ করে। }
অক্জিলিয়ারী স্ট্যাকের উপর প্রধান স্ট্যাকের উপরে জনতার। স্ট্যাকের মধ্যে এখনও একটি উপাদান রয়েছে, আইপি তার জিনিসটি চালিয়ে যাচ্ছে। সবসময় সহায়ক স্ট্যাকে স্থানান্তরিত হয়ে যায় (এবং প্রক্রিয়াটিতে বিপরীত হয়), আইপি তার পরিবর্তে পূর্বদিকে চলে যায়, শেষ লুপটিতে প্রবেশ করে:
\{@
#!
\
আবার একটি লাইনফিড মুদ্রণ করে, {
সহায়ক স্ট্যাক থেকে একটি আইটেমকে প্রধানতে নিয়ে যায়। যদি এটি এখনও তালিকার কোনও আইটেম ছিল তবে এটি ইতিবাচক হবে এবং আইপিটি দক্ষিণে পরিণত হয় যেখানে আইটেমটি মুদ্রিত হয় !
। তারপর #
স্ট্যাকের গভীরতা পাহাড় জমে (এবং এখন এই যেখানে প্রাথমিক হয় _
গুরুত্বপূর্ণ কারণ এই, #
একটি ইতিবাচক স্ট্যাক গভীরতা নিশ্চিত করে), যাতে আইপি এখনো মাধ্যমে ঠিক দেখা যাচ্ছে, \
এবং {
আবার।
আমরা সমস্ত মুদ্রণ করার পরে, {
সহায়ক স্ট্যাকের নীচে থেকে একটি শূন্য টানুন, আইপি পূর্বদিকে চালিয়ে @
যায় এবং প্রোগ্রামটি সমাপ্ত করে।