জাপট , 43 বাইট
"Ýûÿ©ÿßY÷ß"®c s4äëAU ¬£2839¤ë4X÷d0S1U
কিছু অপ্রিন্টেবল রয়েছে। এটি অনলাইন চেষ্টা করুন!
ট্যালিস: সংক্ষেপিত ডেটা 13 বাইট, এটি সঙ্কুচিত করতে 9 বাইট এবং আউটপুট গঠনের 21 বাইট
ব্যাখ্যা
অবহেলিত কোড:
"Ýûÿ©ÿßY÷ß"® c s4à ¤ ëAU ¬ £ 2839¤ ë4Xà · d0S1U
"Ýûÿ©ÿßY÷ß"mZ{Zc s4} s2 ëAU q mX{2839s2 ë4X} qR d0S1U
ঠিক চারটি পৃথক সারি সম্ভাবনা রয়েছে: ( #একটি অঙ্ক উপস্থাপন করে)
#
#
# #
###
সুতরাং, প্রতিটি সংখ্যা পাঁচটি বেস -4 সংখ্যার সেট হিসাবে সংরক্ষণ করা যেতে পারে। যেহেতু প্রতিটি সংখ্যা তখন 10 বিটে সংরক্ষণ করা যায়, মোট 100 বিট, যা 13 বাইটের সাথে মিলে যায়। আমি সংক্ষেপণ প্রক্রিয়াটি এড়িয়ে যাব এবং এর পরিবর্তে ডিকম্প্রেশনটি ব্যাখ্যা করব।
mZ{Zc s4}
mZ{ } // Replace each character Z in the compressed string with the following:
Zc // Take the char-code of Z.
s4 // Convert to a base-4 string.
ডিকম্প্রেশন পরে, 13-বাইট সংকোচিত স্ট্রিংটি দেখতে দেখতে:
3131332333332111200122213333313321011121213133133133
মনে রাখবেন যে 4-অঙ্কের কোনও রান যদি শুরু হয় তবে এটি ব্যর্থ হবে 0, কারণ শীর্ষস্থানীয় শূন্যগুলি কখন ছেড়ে যাবেs4 রান । আমরা এটি 0উপস্থাপন করে এটি ঠিক করতে পারি # , যা কেবল তিনবার প্রদর্শিত হয় এবং এর মধ্যে কোনওটিই 4-অঙ্কের রান শুরুর পরে আসে না।
s2 // Slice off the first two chars of the result.
ঠিক আছে, সুতরাং আমাদের ৫০-সংখ্যার স্ট্রিংটি 4 এর অংশগুলিতে সুন্দরভাবে সংকুচিত হওয়ার জন্য, আমাদের দুটি অতিরিক্ত সংখ্যা যুক্ত করতে হয়েছিল। স্ট্রিংয়ের শুরুতে তাদের যুক্ত করার অর্থ আমরা ওয়ান-বাইটার দিয়ে কেটে ফেলতে পারি ¤।
ëAU // Take every 10th (A) char in this string, starting at index <input> (U).
লজ্জাজনকভাবে, জাপ্টে স্ট্রিংটি এক্স দৈর্ঘ্যের টুকরোতে বিভক্ত করার জন্য একটি অন্তর্নির্মিত অভাব রয়েছে every এটি প্রতি দশম চর পাওয়ার জন্য একটি অন্তর্নির্মিত রয়েছে তবে যাইহোক, আমরা প্রথমে উপরের সারির সমস্ত এনকোড করে সমস্ত তথ্য সংরক্ষণ করতে পারি, তারপরে দ্বিতীয় সারির সমস্ত, ইত্যাদি
তাই এখন আমরা 5 অঙ্ক স্ট্রিং অঙ্ক আমরা তৈরি করতে, যেমন চান এনকোডিং আছে 32223জন্য 0।
q mX{2839s2 ë4X} qR
q // Split the resulting string into chars.
mX{ } // Replace each char X with the result of this function:
2839s2 // Convert the magic number 2839 to a binary string.
ë4X // Take every 4th char of this string, starting at index X.
qR // Join the result with newlines.
যাদু নম্বরটি ব্যাখ্যা করতে, চারটি স্বতন্ত্র সারিটি আবার উল্লেখ করুন। আপনি যদি #সাথে 1এবং এর সাথে প্রতিস্থাপন করেন তবে 0আপনি পাবেন
100
001
101
111
এটি ট্রান্সপোস করা এবং তারপরে একটি একক স্ট্রিংয়ে যোগ দেওয়া আমাদের দেয় 101100010111 । দশমিক এবং, ভিওলা রূপান্তর, আপনি 2839. প্রক্রিয়া Reversing মানচিত্র ডিজিটের আছে 0123চার বাইনারি উপরে দেখানো সারি মধ্যে।
প্রায় শেষ! এখন যা করতে হবে তা হ'ল স্পেস এবং অঙ্কগুলিতে যুক্ত করা:
d0S1U // In the resulting string, replace 0 with " " (S) and 1 with <input> (U).
এবং presto, অন্তর্নিহিত আউটপুট বাকী যত্ন নেয়। আমি দুঃখিত যে এই ব্যাখ্যাটি এত দীর্ঘ, তবে আমি এটির কম বোধগম্য না করে গল্ফ করার কোনও সত্যিকারের উপায় দেখতে পাচ্ছি না (যদি এটি বোধগম্য হয় ...)