সিজেম, 77 71 70 69 63 62 বাইট
r_,5*_Sa*a*\{~"÷Ðëúܾ¿ðÿþ"=i2bS"\/"4*W<+.*3/..e>2fm>2m>}/Wf%N*
সমস্ত অক্ষর মুদ্রণযোগ্য, সুতরাং অনুলিপি এবং পেস্ট ঠিক কাজ করা উচিত।
সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।
ধারণা
আমরা ইনপুটটিতে অঙ্কের এন সংখ্যা পরীক্ষা করে এবং আউটপুটটি কভার করার জন্য যথেষ্ট বড় স্পেসের এক বর্গক্ষেত্রকে চাপ দিয়ে শুরু করি। বাস্তবায়নে, এই বর্গক্ষেত্রকে এক-বর্ণের স্ট্রিংয়ের দ্বিমাত্রিক অ্যারে হিসাবে এনকোড করা হবে।
2n + 1 দৈর্ঘ্যের একটি বর্গক্ষেত্রটি সরল বাস্তবায়নের জন্য ঠিক ডানদিকে (অর্থাত্ কোনও আশেপাশের সাদা অংশ নয়) হবে, তবে আমরা কয়েক বাইট সংরক্ষণ করতে 5n দৈর্ঘ্যের একটি ব্যবহার করব । ধন্যবাদ, আশেপাশের সাদা স্থান অনুমোদিত।
যদি আমরা 8 এর সাতটি স্ল্যাশ উপস্থাপনার লাইনগুলিকে বিপরীত করি তবে আমরা নিম্নলিখিতটি পাই:
\/
\/\
/\
সমস্ত অঙ্কের উপস্থাপনাটি 8-বিট পূর্ণসংখ্যা হিসাবে এনকোড করা যায়, যেখানে i তম বিট 0 হয় যদি i তম অক্ষরটি একটি স্থানের সাথে প্রতিস্থাপন করা উচিত। 0 থেকে 9 সংখ্যাগুলির জন্য , ফলাফলগুলি পূর্ণসংখ্যা হয়
247 208 235 250 220 190 191 240 255 254
যা নিম্নলিখিত ISO-8559-1 অক্ষরের সাথে মিলে যায়:
÷Ðëúܾ¿ðÿþ
ইনপুট প্রতিটি অঙ্ক জন্য, সংশ্লিষ্ট 8-বিট পূর্ণসংখ্যা নির্বাচন করার পরে, আমরা আমি আবার বলছি তম প্রতিনিধিত্ব চরিত্র 8 ঠিক একটি আমি বার, যেখানে একটি আমি আমিই সে ব্যক্তি তম পূর্ণসংখ্যা বিট। এটি এক বা শূন্য বর্ণের একটি স্ট্রিংয়ের অ্যারেকে ঠেলে দেয়। 3 টি দৈর্ঘ্যের অংশগুলিতে এই অ্যারেটি ভাগ করে আমরা একটি অ্যারে পাই যেখানে প্রতিটি উপাদান প্রতিনিধিত্বের একটি লাইনের সাথে মিলে যায়।
এখন, আমরা বর্গটি প্রতিনিধিত্ব করে এমন স্ট্রিংগুলির সর্বাধিক ভেক্টরাইজড সারণি এবং অঙ্কটি উপস্থাপন করে এমন স্ট্রিংগুলি গণনা করি। স্ট্রিংগুলি স্ট্রিংয়ের চেয়ে বড় /
এবং তাই তারা স্কোয়ারের স্থানগুলি প্রতিস্থাপন করবে। খালি স্ট্রিংটি তবে স্ট্রিংয়ের চেয়ে ছোট , সুতরাং অঙ্ক উপস্থাপনের ফাঁকা স্ট্রিংগুলি স্কোয়ারের ফাঁকা স্থান সংরক্ষণ করবে।\
বর্গের যথাযথ অংশে নিম্নলিখিত অঙ্কের উপস্থাপনা রাখার জন্য আমরা এখন দুটি ইউনিট দ্বারা সারি এবং কলামগুলি ঘোরান এবং ইনপুটটিতে বাকী অঙ্কগুলির প্রক্রিয়াটি পুনরাবৃত্তি করি।
অবশেষে, আমরা প্রতিটি সারি বিপরীত করি এবং পৃথক সারিগুলির মধ্যে একটি লাইনফিড সন্নিবেশ করি।
কোড
r_, e# Read a token from STDIN and push the length of a copy.
5*_ e# Multiply the length by 5 and push a copy.
Sa* e# Repeat the array [" "] that many times.
a* e# Repeat the array [[" " ... " "]] that many times.
\{ e# For each character C in the input:
~ e# Push eval(C), i.e., the digit the character represents.
"÷Ðëúܾ¿ðÿþ"
e# Push the encodings of all 10 seven slash representations.
= e# Select the proper one.
i2b e# Push the resulting characters code point in base 2, i.e., its bits.
S e# Push " ".
"\/"4* e# Push "\/\/\/\/".
+W< e# Concatenate and eliminate the last character.
.* e# Vectorized repetition.
e# For the digit 5, e.g., we have [1 0 1 1 1 1 1 0] and " \/\/\/\" on
e# the stack, so .* yields [" " "" "/" "\" "/" "\" "/" ""].
3/ e# Divide the representation into chunks of length 3, i.e., its lines.
..e> e# Compute the twofold vectorized maximum, as explained above.
2fm> e# Rotate each line to characters to the right.
2m> e# Rotate the lines two units down.
}/
Wf% e# Reverse each line.
N* e# Place linefeeds between them.
বর্গাকার পার্শ্বের দৈর্ঘ্য 2n + 3 এর চেয়ে কম হলে শেষ আবর্তনগুলি আউটপুট জগাখিচুড়ি করে । যেহেতু 5n ≥ 2n +3 সব ধনাত্মক পূর্ণসংখ্যা জন্য এন , বর্গাকার যথেষ্ট বড় এটিকে রোধ হয়।