এটি ছিল অত্যন্ত মজা। এই চ্যালেঞ্জ পোস্ট করার জন্য আপনাকে ধন্যবাদ।
সম্পূর্ণ প্রকাশ: এই চ্যালেঞ্জটি পোস্ট করার সময় ভাষা (হেক্সাগনি) উপস্থিত ছিল না। তবে, আমি এটি আবিষ্কার করি নি, এবং ভাষা এই চ্যালেঞ্জের জন্য ডিজাইন করা হয়নি (বা অন্য কোনও নির্দিষ্ট চ্যালেঞ্জ)।
){_2"_{\"{{""}"{'2//_.\><*\"\/_><[\]/3\'\_;|#__/(\2\'3_'}(#:|{$#{>_\//(#={/;01*&"\\_|[##={|}$_#></)]$_##|){*_.>.(/?#//~-="{}<_"=#/\}.>"%<.{#{x\"<#_/=&{./1#_#>__<_'\/"#|@_|/{=/'|\"".{/>}]#]>(_<\'{\&#|>=&{{(\=/\{*'"]<$_
ষড়ভুজযুক্ত আউট:
) { _ 2 " _ { \ "
{ { " " } " { ' 2 /
/ _ . \ > < * \ " \ /
_ > < [ \ ] / 3 \ ' \ _
; | # _ _ / ( \ 2 \ ' 3 _
' } ( # : | { $ # { > _ \ /
/ ( # = { / ; 0 1 * & " \ \ _
| [ # # = { | } $ _ # > < / ) ]
$ _ # # | ) { * _ . > . ( / ? # /
/ ~ - = " { } < _ " = # / \ } .
> " % < . { # { x \ " < # _ /
= & { . / 1 # _ # > _ _ < _
' \ / " # | @ _ | / { = /
' | \ " " . { / > } ] #
] > ( _ < \ ' { \ & #
| > = & { { ( \ = /
\ { * ' " ] < $ _
প্রোগ্রামটি আসলে #
নির্দেশনাটি ব্যবহার করে না , তাই কোষগুলি প্রকৃতপক্ষে অব্যবহৃত রয়েছে তা দেখানোর জন্য আমি সেই চরিত্রটি ব্যবহার করেছি।
এই প্রোগ্রাম কিভাবে কাজ করে? যা নির্ভর করে. আপনি কি সংক্ষিপ্ত সংস্করণ চান, না দীর্ঘ?
সংক্ষিপ্ত ব্যাখ্যা
নিম্নলিখিত ব্যাখ্যায় "লাইন" এবং "বিভাগ" দ্বারা আমি কী বোঝাতে চাইছি তা বোঝানোর জন্য, উদ্দেশ্যযুক্ত আউটপুটটির এই বিচ্ছেদ বিবেচনা করুন:
segments →
│ │ │ │ │ │x lines
─┼───┼─┼─────────┼─┼───┼─ ↓
│ │ │ │ │xxx│
─┼───┼─┼─────────┼─┼───┘
│ │ │ │x│
─┼───┼─┼─────────┼─┘
│ │ │xxxxxxxxx│
─┼───┼─┼─────────┘
│ │x│
─┼───┼─┘
│xxx│
─┼───┘
x│
এটি ব্যাখ্যা করার সাথে, প্রোগ্রামটি নিম্নলিখিত সিউডোকোডের সাথে মিলে যায়:
n = get integer from stdin
# Calculate the number of lines we need to output.
line = pow(2, n+1)
while line > 0:
line = line - 1
# For all segments except the last, the character to use is spaces.
ch = ' ' (space, ASCII 32)
# The number of segments in each line is
# equal to the line number, counting down.
seg = line
while seg > 0:
seg = seg - 1
# For the last segment, use x’s.
if seg = 0:
ch = 'x' (ASCII 120)
# Calculate the actual segment number, where the leftmost is 1
n = line - seg
# Output the segment
i = pow(3, number of times n can be divided by 2)
i times: output ch
output '\n' (newline, ASCII 10)
end program
দীর্ঘ ব্যাখ্যা
দয়া করে এই রঙ-কোডেড কোড পাথ চিত্রটি দেখুন।
এক্সিকিউশনটি উপরের বাম কোণে শুরু হয়। নির্দেশের ক্রম){2'"''3''"2}?)
"{
মোটামুটি সংশ্লেষিত পথ অনুসরণ করে (প্লাস কয়েকটি রিডানড্যান্ট বাতিল, যেমন ইত্যাদি) কার্যকর করা হয়। আমরা ক্রিমসনে হাইলাইট করা নির্দেশ পয়েন্টার # 0 দিয়ে শুরু করি। অর্ধেক পথ ধরে, আমরা উপরের ডানদিকের কোণে শুরু করে বন সবুজ রঙে আঁকা # 1 এ চলেছি। আইপি # 2 কর্নফ্লাওয়ার নীল (মাঝের ডানদিকে) থেকে শুরু হলে মেমরির বিন্যাসটি হ'ল:
পুরো প্রোগ্রাম জুড়ে, প্রান্তগুলি 2a লেবেলযুক্ত এবং 2 বি সর্বদা মান থাকবে 2
(আমরা তাদের 2ⁿ⁺¹ গণনা করতে এবং যথাক্রমে 2 দ্বারা বিভক্ত করতে ব্যবহার করি) এবং 3 লেবেলযুক্ত প্রান্তটি সর্বদা থাকবে 3
(আমরা এটি 3ⁱ গণনা করতে ব্যবহার করি)।
কর্নফ্লাওয়ার নীল রঙে হাইলাইট করা আমাদের প্রথম লুপটি প্রবেশ করার সাথে সাথে আমরা ব্যবসায় পেতে পারি। এই লুপটি (}*{=&}{=
2ⁿ⁺¹ মান গণনা করার জন্য নির্দেশাবলী কার্যকর করে ⁿ⁺¹ যখন লুপটি প্রস্থান করে, স্যাডল ব্রাউন পাথটি নেওয়া হয়, যা আমাদের নির্দেশ পয়েন্টার # 3 এ নিয়ে যায়। এই আইপিটি নীচে প্রান্তে কেবল গোল্ডেনরোড হলুদে ছড়িয়ে পড়ে এবং শীঘ্রই আইপি # 4 এ নিয়ন্ত্রণ অতিক্রম করে।
Fuchsia পথ নির্দেশ করে কিভাবে আইপি # 4, নীচে বাঁদিকের শুরু, দ্রুতগতিতে হ্রাস আয় লাইন , সেট CH করার 32
(স্থান চরিত্র) এবং seg (এর নতুন মান) এর লাইন । এটি প্রাথমিকভাবে হ্রাসের কারণে যা আমরা আসলে 2ⁿ⁺¹ − 1 দিয়ে শুরু করি এবং অবশেষে মান 0 দিয়ে একটি শেষ পুনরাবৃত্তিটি অনুভব করি We আমরা তারপরে প্রথম নেস্টেড লুপটি প্রবেশ করি ।
আমরা শাখাবিন্যাস নীল, যেখানে, একটি সংক্ষিপ্ত হ্রাস পর আমাদের মনোযোগ ঘুরিয়ে seg , আমরা দেখতে CH আপডেট x
শুধুমাত্র যদি seg এখন শূন্য। পরে, এন লাইন সেট করা আছে - সেগমেন্টের প্রকৃত সংখ্যাটি নির্ধারণ করতে সেগ করুন Im তাত্ক্ষণিকভাবে আমরা এবার অন্য লুপটি প্রবেশ করলাম, এবার টমেটোর ন্যায্য রঙে।
এখানে, আমরা নির্ধারণ করেছি যে কতবার n (বর্তমান বিভাগের সংখ্যা) 2 দ্বারা বিভক্ত করা যেতে পারে যতক্ষণ মডুলো শূন্য দেয় ততক্ষণ আমরা i বৃদ্ধি করব এবং n কে 2 দিয়ে ভাগ করব যখন আমরা সন্তুষ্ট হই তখন n আর এভাবে বিভাজ্য হয় না , আমরা স্লেট ধূসরতে শাখা করি, যার দুটি লুপ থাকে: প্রথমে এটি আমরা যে হিসাব করেছিলাম তার শক্তিতে 3 উত্থাপন করে এবং তারপরে এটি বহুবার ছাড়িয়ে যায়। লক্ষ্য করুন যে এই লুপগুলির প্রথমটিতে একটি রয়েছে[
নির্দেশনা, যা আইপি # 3 এ নিয়ন্ত্রণ নিয়ন্ত্রণ করে - এটি কেবলমাত্র নীচের প্রান্তে কেবল শিশুর পদক্ষেপ নিয়েছিল। লুপের বডি (3 দিয়ে গুণমান এবং হ্রাস) একটি নিঃসঙ্গ আইপি # 3 দ্বারা নির্বাহ করা হয়, কোডের নীচের প্রান্তটি সহ একটি অন্তহীন গা dark় জলপাই সবুজ চক্রে বন্দী। একইভাবে, এই স্লেট ধূসর লুপগুলির দ্বিতীয়টিতে একটি ]
নির্দেশ রয়েছে , যা আইপি # 5 কে আউটপুট সিএইচ এবং হ্রাসকে সক্রিয় করে , এখানে গা dark় ভারতীয় লাল দেখায়। উভয় ক্ষেত্রেই, দাসত্বের মধ্যে আটকে থাকা সেই নির্দেশিকা পয়েন্টারগুলি বাধ্যতামূলকভাবে এক সময়ে একটি পুনরাবৃত্তি সম্পাদন করে এবং আইপি # 4 এ নিয়ন্ত্রণ ফিরিয়ে দেয়, কেবলমাত্র তাদের পরিষেবাটি পুনরায় আহ্বানের জন্য এই মুহুর্তটিকে বিড করার জন্য। স্লেট ধূসর, ইতিমধ্যে, এর ফুচিয়া এবং নীল ভাইদের সাথে আবার যোগদান করে।
সেগ যখন অনিবার্যভাবে শূন্যে পৌঁছেছে, নীল লুপটি লন সবুজ পথে বেরিয়ে আসে, যা কেবল নতুন লাইন চরিত্রটিকে আউটপুট করে এবং লাইন লুপটি অবিরত করার জন্য অবিলম্বে ফুশিয়ায় ফিরে যায় । লাইন লুপের চূড়ান্ত পুনরাবৃত্তির বাইরে চূড়ান্ত প্রোগ্রামের সমাপ্তির সংক্ষিপ্ত সাবলীল ইবোনের পথ রয়েছে।
(,],~3^#@~.)@]
পরিবর্তে পাওয়ার লুপের ভিতরে(1,[:,1,"0~3*])
। এবং যদি আপনি!
আউটপুট চর হিসাবে ঠিক থাকেনu:32+
পরিবর্তে' #'{~
অন্য একটি সংরক্ষণ করে।