বিবরণ
মাউরিসের মূল কোডটি নিম্নলিখিতটি করে:
"f~" e# Push that string on the stack.
:i e# Cast each to integer. Pushes [102 126].
:# e# Reduce by exponentiation. Pushes 102^126.
সিজেমের গাণিতিক অপারেটরগুলির মধ্যে অন্য কোনও ছোট সংখ্যার জন্য এমন একটি সংখ্যা প্রদান :#করতে পারে না , সুতরাং এটি পরিবর্তন করা যায় না। যেহেতু #, ক্ষয়ক্ষতির জন্য ব্যবহৃত হয়, কেবল ইনপুট হিসাবে পূর্ণসংখ্যার গ্রহণ করে, :iপাশাপাশি সরানো যায় না। এটি ইনপুটটি সংশোধন করার জন্য কেবলমাত্র একটি জায়গা ছেড়ে দিয়েছে: স্ট্রিং "f~"।
স্ট্রিংটি যতগুলি অক্ষর ধারণ করে তা বিবেচনা না করেই ফলাফলটি একটি বাম-সহযোগী শক্তি টাওয়ার হবে। সিজেএম 0 থেকে 65535 (সারোগেট ব্যতীত) এর পরিসরে অক্ষরগুলিকে সমর্থন করে, সুতরাং আমাদের আউটপুটটি b n × k × j হিসাবে প্রকাশ করতে হবে , যেখানে b , n , k এবং j এই পরিসরের পূর্ণসংখ্যা।
সংশোধিত কোড থেকে প্রাপ্ত পূর্ণসংখ্যার দশমিক লগারিদম লগ 10 (2.44 × 10 242545 ) = লগ 10 (2.44) + 242545 এর তুলনায় কিছুটা ছোট , তাই আমরা সঠিক মানগুলি খুঁজে পেতে সমস্ত সম্ভাব্য ঘাঁটির লগারিদমের দ্বারা এই মানটি ভাগ করতে পারি জন্য এন × ট × ঞ ।
আসলে:
$ cjam <(echo '65536,2>{2.44AmL242545+1$AmL/i:I#s8<"24399707"=}=SIN')
5 347004
প্রথম 8 টি সংখ্যার তুলনা করা যথেষ্ট ছিল।
এর অর্থ হ'ল আমরা আউটপুটটি 5 347,004 = 15625 57,834 = 125 9 × 102 × 126 হিসাবে প্রকাশ করতে পারি , সুতরাং এটির সাথে বা এটি প্রতিস্থাপনের"f~""㴉""} f~" পক্ষে যথেষ্ট ।
কোড
"㴉":i:#
অথবা
"} f~":i:#
নোট করুন যে ASCII কোডের ফাঁকা স্থানগুলি আসলে একটি ট্যাবুলেটর হওয়া উচিত।
অনলাইন ইন্টারপ্রেটারে এই কোডটি কার্যকর করার চেষ্টা করা সম্ভবত একটি খারাপ ধারণা, তবে আপনি কীভাবে কমান্ড লাইন থেকে ফলাফলগুলি যাচাই করতে পারবেন তা এখানে:
$ wget -q https://bpaste.net/raw/f449928d9870
$ cjam <(echo '[15625 57834]:c`":i:#") > mauris.cjam
$ cat mauris.cjam; echo
"㴉":i:#
$ cjam mauris.cjam | diff -s - f449928d9870
Files - and f449928d9870 are identical
$ echo -en '"}\tf~":i:#' > mauris-ascii.cjam
$ cat mauris.cjam; echo
"} f~":i:#
$ cjam mauris-ascii.cjam | diff -s - f449928d9870
Files - and f449928d9870 are identical