গল্ফ একটি বেগুনি দোভাষী
বেগুনি একটি এসোলাং যা দুটি মূল উদ্দেশ্যে ডিজাইন করা হয়েছে:
- আউবারগিনের ক্ষুদ্রতরকরণ হতে , যেহেতু চারপাশে কেবলমাত্র স্ব-সংশোধনকারী এক-নির্দেশিকার ভাষা নেই।
- ভয়াবহভাবে ছোট গল্ফড দোভাষীদের সম্ভাবনা স্বীকার করা । যৌক্তিকভাবে পূর্ণ বৈশিষ্ট্যযুক্ত পাইথন 2 দোভাষীর আমার প্রথম পাসটি মাত্র 702 বাইট, এবং আমি নিশ্চিত যে আরও অভিজ্ঞ গল্ফার সেখান থেকে খানিকটা শেভ করতে পারে।
আপনার লক্ষ্য এই ভাষার জন্য একজন দোভাষী লিখতে হবে।
বেগুনি সম্পর্কিত তথ্য:
বেগুনি প্রোগ্রাম হ'ল অক্ষরগুলির একটি অনুক্রম যা অসীম, ঠিকানাযোগ্য মেমরি অ্যারেতে রাখা হয় যে প্রোগ্রামের প্রথম অক্ষরটি শূন্যের ঠিকানায় স্থাপন করা হয়। অ্যারের বাকি অংশ (উভয় আগে এবং পরে বেগুনি প্রোগ্রামটি সংরক্ষণ করা হয়) শূন্যে আরম্ভ করা হয়।
বেগুনীতে তিনটি নিবন্ধ রয়েছে, যাকে ক এবং বি এবং আই বলা হয়, যার প্রত্যেকটিতে স্বাক্ষরিত পূর্ণসংখ্যা থাকতে পারে এবং শূন্যে শুরু করা হয়। আমি এছাড়াও নির্দেশ পয়েন্টার, এবং সবসময় বর্তমানে নির্বাহ বেগুনি নির্দেশ স্থানটিকে চিহ্নিত করে।
প্রতিটি চক্র, দোভাষী নির্দেশ পয়েন্টার দ্বারা নির্দেশিত মেমরি অবস্থান থেকে শুরু করে তিনটি স্বতন্ত্র অক্ষরের ক্রম পড়বে এবং বেগুনি নির্দেশ হিসাবে এই ক্রমটি কার্যকর করার চেষ্টা করবে। এরপরে, নির্দেশ পয়েন্টারটি সর্বদা 3 দ্বারা বাড়ানো হয়।
কৃত্রিমভাবে, বেগুনি নির্দেশনায় " xyz " এর মতো একটি সারিতে তিনটি অক্ষর (বা এর এনকোডিং) থাকে ।
প্রথম অক্ষর এক্স নিম্নলিখিত যে কোনও একটি হতে পারে:
abABio
এই প্রতীকগুলির নিম্নলিখিত অর্থ রয়েছে:
a - Place the result in register a.
b - Place the result in register b.
A - Place the result in the location in memory referred to by register a.
B - Place the result in the location in memory referred to by register b.
i - Set the instruction pointer to the result.
o - Output the result to stdout.
অন্য দুটি বাইট y এবং z নিম্নলিখিত যে কোনও হতে পারে:
abABio1
এই চিহ্নগুলির প্রত্যেকটির নীচের অর্থ রয়েছে:
a - Return the contents of register a.
b - Return the contents of register b.
A - Return the contents of the memory array at the address stored in register a.
B - Return the contents of the memory array at the address stored in register b.
i - Return the contents of register i (the instruction pointer).
o - Return the value of a single character read from stdin.
1 - Return the literal numeric value 1.
নির্দেশ আনার সময় পর বেগুনি অনুবাদক মূল্যায়ন করবে Y এবং তারপর z- র , ফল বিয়োগ z- র ফল থেকে Y , এবং তারপর কর্ম দ্বারা নির্দেশিত সঞ্চালন এক্স পার্থক্য।
যদি তিনটি অক্ষরের ক্রম (বা এর এনকোডিংগুলি) একটি বৈধ বেগুনী নির্দেশ না হয়, দোভাষী ত্রুটি না করে সঙ্গে সঙ্গেই থামে।
আপনার দোভাষী অবশ্যই:
- একটি সম্পূর্ণ প্রোগ্রাম হতে হবে, একটি ফাংশন না।
- স্টোরারে কখনও আউটপুট আসবে না , যদি না ইওএফ পড়া হয় ।
- নীচে দেওয়া পরীক্ষামূলক কর্মসূচিসহ খুব ভাল সংখ্যক জড়িত না এমন সমস্ত সু-গঠিত ইনপুটগুলিতে রেফারেন্স প্রয়োগের সাথে অভিন্ন আচরণ করুন। (ভাল, অভিন্নভাবে সময় নির্ধারণ - এটি ধীর গতিতে চলতে পারে তবে খুব বেশি না!)
আপনি আপনার ইচ্ছামত যে কোনও ফর্মটি প্রোগ্রামটি দোভাষীকে সরবরাহ করতে পারেন: এটি কোনও ফাইল থেকে পড়ুন, প্রোগ্রামটিকে স্ট্রিং হিসাবে এম্বেড করুন বা স্টিডিন থেকে পড়ুন read
পরীক্ষার কেস:
কার্যক্রম
ooo
ইনপুট দিয়ে চালানো যখন
z!
ফলন করা উচিত
Y
কার্যক্রম
bbboobiii
ইনপুট দিয়ে চালানো যখন
It's a cat program.
(বা অন্য কোনও ইনপুট) ফলন করা উচিত
It's a cat program.
(বা এটি যে কোনও ইনপুট পেয়েছে) এবং তারপরে আবার শুরু করুন এবং আবার একই জিনিসটি করুন ।
কার্যক্রম
Aoab11bi1bABoAaiba
ইনপুট দিয়ে চালানো যখন
0
ফলন করা উচিত
0
এবং তারপরে থামুন, তবে যখন ইনপুট দিয়ে চালাবেন
1
আউটপুট চালিয়ে যাওয়া উচিত
1
চিরতরে.
কার্যক্রম
b1bbb1oAbabaa1ab1Ab1Bi1b
ফলন করা উচিত
b1bbb1oAbabaa1ab1Ab1Bi1b
কার্যক্রম
aA1aa1bb1oAbbi1bb1bbAb1Bi1b Purple is the awesomest! Why haven't you tried it yet?
!dlroW ,olleG
ফলন করা উচিত
Hello, World!
স্কোরিং:
এটি কোড-গল্ফ , বাইটের মধ্যে সবচেয়ে সংক্ষিপ্ত উত্স, নিম্নলিখিত বোনাস দ্বারা সম্ভাব্য সংশোধিত হিসাবে, জিতেছে।
বোনাস:
- -10% যদি আপনার ইন্টারপ্রেটার স্ট্যান্ডিনের বা কমান্ড লাইন আর্গুমেন্ট থেকে ফাইলের নাম পড়ে এবং ফাইলটি থেকে প্রোগ্রামটি লোড করে।
uint32
অক্ষরের জন্য এবং ইনসগুলির জন্য MAXINT ব্যবহার করতে হবে