zsh, 603 594 566 561 548 440 415 399 378 370 বাইট
ec
ho \\n;ca t<<<$'\x20';exi t
d$c -e8BC6P
d0c -eKp
$'\172\163\150' $'\055\143' $'\146\157\162 v \151\156 \173\043\056\056\134\175\175\073\173 \146\147\162\145\160 \055\161 $\166 '$0$'\174\174\074\074\074$\166\073\175'
$'\145v\141\154' $':\073\072\046\046\145\170\151\164';#%&()*+,/9=>?@ADEFGHIJLMNOQRSTUVWXYZ[]^_`jklmsuwy
0# $#;for b in {$..z};{ fgrep -q $b $0||<<<$b;}
কোর্টিলগুলি + এর উপর নির্ভর করে dc
।
এটি অনলাইন চেষ্টা করুন!
এটা ছিল ... একটি যাত্রা।
এই উত্তরের তিনটি অংশ রয়েছে। প্রথম 4 টি লাইন নিম্নলিখিত কোডটি সহজ করার জন্য কিছু বিশেষ কেস পরিচালনা করে। পরবর্তী 2 লাইন এবং শেষ লাইন উভয়ই একই জিনিসটি মূলত সম্পন্ন করে তবে ঠিক একটি বর্ণিত অক্ষর অপসারণের সাথে চালিত হয়। এগুলি বেশিরভাগ পরিপূরক চরিত্রের সেট দিয়ে লেখা হয়, যাতে কোনও চরিত্র অপসারণ করা কেবলমাত্র একটিতে বিরতি দেয়, অন্যটির কাজ চালিয়ে যাওয়ার সুযোগ দেয়।
প্রথম অংশটির দিকে তাকিয়ে আমরা প্রথমে পরিচালনা করি
- সাথে নিউলাইন অপসারণ
ec\nho \\n
- স্থান অপসারণ
ca t<<<$'\x20'
( exi t
পরবর্তী কোড চালানো এড়ানোর জন্য অনুসরণ করা হবে, যার ফলে বহিরাগত আউটপুট হবে)
$
d$c -e8BC6P
( 8BC6
= 9226
হয়) দিয়ে অপসারণ36*256 + 10
, এবং 36 এবং 10 $
যথাক্রমে এবং নিউলাইন অক্ষরের বাইট মান ; আমরা line লাইনে বৃহত্তর মন্তব্যে অন্তর্ভুক্ত না করার জন্য দশমিকায় হেক্স সংখ্যা ব্যবহার করি)
0
অপসারণ d0c -eKp
( K
দশমিক যথার্থতা পায় যা হয়)0
পূর্বনির্ধারিত হয়)
পরবর্তী অংশে, ব্যবহৃত একমাত্র অক্ষর (দ্বিতীয় লাইনের শেষে আবর্জনা বাদে) $'\01234567v;
, স্থান এবং নতুন লাইন। এর মধ্যে চারটির জন্য হিসাব করা হয়েছে, সুতরাং বাকি ( '\1234567v
) শেষ লাইনে ঘটতে পারে না। অষ্টাল পলায়নের সম্প্রসারণ ( $'\123'
123 8 মান সহ ASCII চরিত্রের প্রতিনিধিত্ব করে ), আমরা পাই:
zsh -c 'for v in {#..\}};{ fgrep -q $v '$0'||<<<$v;}'
eval ':;:&&exit'
প্রোগ্রামটিতে ব্যবহৃত সমস্ত অক্ষরের মাধ্যমে প্রথম লাইনটি লুপ করে এবং প্রত্যেকটির নিজস্ব উত্স কোডে অনুসন্ধান করে ($0
স্ক্রিপ্টটি চালিত হচ্ছে এর ফাইল নাম), খুঁজে পাওয়া যায় না এমন কোনও অক্ষর মুদ্রণ করে।
দ্বিতীয় লাইনটি কিছুটা অদ্ভুত দেখাচ্ছে এবং exit
একসাথে কিছুটা নোপসের মতো একই জিনিসটি প্রদর্শিত হবে । তবে, অষ্টাল exit
হিসাবে এনকোডিংয়ের ফলে সরাসরি ফলাফল হয় $'\145\170\151\164'
যা এতে থাকে না 2
বা থাকে না 3
। আমাদের এটি অপসারণে আরও কম স্থিতিস্থাপক করা প্রয়োজন । এটি কারণ যদি কোনও '\014567v
অপসারণ করা হয়, প্রথম লাইনটি ভঙ্গ করে, দ্বিতীয় লাইনটিও ভেঙে যায়, কোডটির বাকী অংশগুলি কার্যকর করতে দেয়। তবে, আমাদের এটিও ভেঙে ফেলতে হবে 2
বা 3
সরানো হয়েছে যাতে 3 এবং 4 লাইন চলতে পারে। এই shoehorning দ্বারা সম্পন্ন হয় :
এবং;
যার আক্ষরিক উপস্থাপনে যথাক্রমে 2 এবং 3 থাকে।
লাইন 2 এর শেষের জাঙ্কটি কেবল প্রতিটি মুদ্রণযোগ্য ASCII চরিত্রটি অন্তত একবার উপস্থিত হওয়ার বিষয়টি নিশ্চিত করার জন্য রয়েছে, যেহেতু প্রতিটিটির মধ্য দিয়ে লুপিং করে চেকিং করা হচ্ছে এটির জন্য এটি প্রয়োজন।
যদি exit
প্রথম বিভাগে না ডাকা হয় (যেমন এটির একটি অপসারণের ফলে এটি ম্যাঙ্গেল হয়েছিল '\01234567v
), আমরা দ্বিতীয় দিকে এগিয়ে যাই, যাতে আমাদের এই অক্ষরগুলির কোনওটি ব্যবহার না করেই একই জিনিসটি সম্পাদন করতে হবে। শেষ লাইনটি ডিকোড করা প্রথম লাইনের মতো, আমরা কয়েকটি বাইট সংরক্ষণের জন্য লুপের সীমাটি চুক্তি করতে পারি, কারণ আমরা ইতিমধ্যে জানি যে ব্যতীত সমস্ত অক্ষর '\01234567v
coveredেকে দেওয়া হয়েছে। এটির 0# $#
আগে এটিও রয়েছে , যা এটিকে মন্তব্য করে এবং অপসারিত আউটপুট উত্পাদন করা 0
বা $
অপসারণ করা হলে বাধা দেয় ।