`:_64/"32}
,` (3 :=-{
"`{"; _v2$ ;`3
"`".:@ ; ".5(`3.
< "" `^`;>
@ মার্টিনব্যাটনার এর সাথে এবং ল্যাবরেথ বর্ণালীটির আরও উন্মাদ দিকের আরও একটি কোলাব - প্রথমবারের মতো আমরা ^>v<
একটি প্রোগ্রামে চারটিই পেয়েছি । এটি অনলাইন চেষ্টা করুন!
ব্যাখ্যা
একটি লুপে সঞ্চালিত সাধারণ অ্যালগরিদমটি নিম্নরূপ:
1. Read a char
2. If EOF:
3. Move all digits from auxiliary stack to main
4. Output all digits on main stack
5. Halt
Otherwise:
6. If char is a letter (c >= 64):
7. If random turns left:
8. Output char XOR 32
Otherwise:
9. Output char
Otherwise:
10. Shift char to auxiliary stack
11. If char is space (c-32 == 0):
12. Pull char back from auxiliary stack
13. Output underscore
Otherwise:
14. Continue loop
ব্যাখ্যাটি সংক্ষিপ্ত রাখতে, প্রোগ্রামটির প্রতিটি অংশ উপরের সিউডোকোডের সাথে কীভাবে মিল রয়েছে তা এখানে:
আকর্ষণীয় অংশ এখানে।
ল্যাবরেথে এলোমেলোভাবে প্রাপ্তি
লাইব্রের্থে এলোমেলোভাবে পাওয়ার একমাত্র উপায় আছে এবং আইপি যখন এগিয়ে যাওয়ার চেষ্টা করে তবে 1) পাথের সামনে বা পেছনের দিকটিও নেই এবং 2) বাম এবং ডানদিকে উপলভ্য উপায় রয়েছে। এই ক্ষেত্রে, আইপি এলোমেলোভাবে বাম এবং ডান রুটের মধ্যে নির্বাচন করে।
এটি কেবল ^>v<
অপারেটরগুলি ব্যবহার করেই সম্ভব , যা n
সারি / কলামটি পপ করে এবং n
১ দিয়ে দূরে সরিয়ে দেয় For উদাহরণস্বরূপ, প্রোগ্রাম ( অনলাইনে এটি চেষ্টা করুন! )
" 1
""v!@
2
!@
1 বা 2 এলোমেলোভাবে আউটপুট দেয়, যেহেতু 1 টি v
দিয়ে অফসেট 0 (অর্থাত আইপি চালু আছে) দিয়ে কলামটি স্থানান্তরিত হয়, ফলন হয়
"
""1!@
v
2!@
আইপি ডানদিকের মুখোমুখি হয় এবং এগিয়ে যাওয়ার চেষ্টা করে (স্ট্যাকের শীর্ষটি শূন্য হয়) তবে তা করতে পারে না। এটি পিছনেও অগ্রসর হতে পারে না, তাই এটি এলোমেলোভাবে বাম বা ডান মধ্যে চয়ন করে।
গল্ফ কৌশল
প্রোগ্রামটি প্রথমে পাঠের ক্রম থেকে শুরু হয়, যা আপনি দেখতে পাচ্ছেন যে এটি আসলে step ধাপ However একটি অপ-বিকল্প
মূল স্ট্যাকটি প্রতিটি পুনরাবৃত্তির পরে কার্যকরভাবে খালি হয়, যা আমাদের নীচে উল্লিখিত শূন্যগুলি ব্যবহার করে >
এবং কোড লেআউটটি গল্ফ করতে দেয় <
। >
নিচের সারি গোপন কাছাকাছি যাতে নীচে বাঁদিকের নীচে ডান দিক থেকে আইপি প্যাচসমূহ, এবং <
বদল আনতে সারি ফিরে। আইপিটি তখন খুশিতে লুপটি চালিয়ে যেতে বাম কলামটি উপরে নিয়ে যায়।
ল্যাবরেথ পপ n
এবং ধাক্কা মধ্যে সংখ্যা 10*n + <digit>
। এছাড়াও, আউটপুট হওয়ার আগে অক্ষরগুলি 256 মডিউল নেওয়া হয়। এই দুটি একসাথে রেখে আমাদের `33
32 (স্পেস) দিয়ে 95 (আন্ডারস্কোর) আউটপুট দেয় , কারণ এটি কাজ করে -3233 % 256 = 95
। যদিও 32 টি 95 তে পরিণত করার অন্যান্য উপায় রয়েছে ( ;95
সবচেয়ে সহজ হচ্ছে), এখানে নেতিবাচক সংখ্যার সাথে কাজ করা আমাদের বাম বাঁক দিয়ে কোডটি কিছুটা সংক্ষিপ্ত করতে সহায়তা করে।