এটি সাপ্তাহিক চ্যালেঞ্জ # 2। থিম: অনুবাদ
একটি প্রোগ্রাম বা ফাংশন যা একটি প্রোগ্রামের জন্য সোর্স কোড লাগে লিখুন প্রস্তাবনা মধ্যে একটি সমতুল্য প্রোগ্রামের জন্য এবং আউটপুট কোড Befunge-93 । প্রোগ্রামটি সমতুল্য হওয়ার জন্য, কোনও প্রদত্ত ইনপুটটির জন্য, প্রিলেড প্রোগ্রামের মতো একই আউটপুট তৈরি করা উচিত, এবং যদি প্রিলিড প্রোগ্রামটি বন্ধ হয় তবেই থামানো উচিত।
ইনপুট ভাষা: উপস্থাপনা
পাইথন দোভাষী:
একটি প্রিলেড প্রোগ্রামে অনেকগুলি "ভয়েসস" থাকে যা নির্দেশাবলী একযোগে কার্যকর করে। প্রতিটি ভয়েসের জন্য নির্দেশাবলী পৃথক লাইনে রয়েছে। প্রতিটি ভয়েসের একটি পৃথক স্ট্যাক থাকে, যা অসীম পরিমাণ জিরো দিয়ে শুরু করা হয়। এক্সিকিউশনটি বামতম কলামে শুরু হয় এবং প্রভাবিত না করে ডানদিকে প্রতিটি কিকের ডানদিকে একটি কলাম অগ্রসর করে)
(
নির্দেশের বা নির্দেশ । শেষ কলামটি পৌঁছে গেলে প্রোগ্রামটি সমাপ্ত হয়।
এই চ্যালেঞ্জের জন্য অনুমানের প্রস্তাব দিন:
Digits 0-9 Push onto the stack a number from 0 to 9. Only single-digit
numeric literals can be used.
^ Push onto the stack the top value of the stack of the above
voice.
v Push onto the stack the top value of the stack of the below
voice.
# Remove the top value from the stack.
+ Pop the top two integers from the stack and push their sum.
- Pop the top two integers from the stack, subtract the topmost
from the second, and push the result.
( If the top of the stack is 0, jump to the column after the
matching `)` after the current column executes.
) If the top of the stack is not 0, jump to the column after
the matching `(` after the current column executes.
? Read an integer from STDIN.
! Pop one value from the stack and print it to STDOUT as an
integer.
<space> No-op
মন্তব্য
v
এবং^
চক্রাকারে কাজ করুন, সুতরাংv
নীচের ভয়েসটি উপরের ভয়েসের স্ট্যাক উপাদানটি অনুলিপি করবে এবং^
উপরের ভয়েসে নীচের ভয়েস থেকে অনুলিপি করবে। প্রতিচ্ছবি: উভয়v
এবং^
একক ভয়েস প্রোগ্রামে স্ট্যাকের শীর্ষ প্রতিলিপি।- এ
(
এবং এর মিলটি)
বিভিন্ন লাইনে অবস্থিত হতে পারে। তবে , ক)
সর্বদা এটি ভয়েসের স্ট্যাকের দিকে নজর রাখবে যেখানে সংশ্লিষ্টটি(
স্থাপন করা হয়েছিল,)
নিজেই যেখানে স্থাপন করা হয়েছে সেখানে নয়। ^
এবং দ্বারা উত্পাদিত মানv
নির্দেশাবলী একই কলামে অন্য কোন অপারেশন সম্পন্ন হওয়ার পূর্বে বর্তমান মান উপর কাজ করে।?
এবং!
esolangs.org এ পাওয়া স্পেসিফিকেশন থেকে আলাদাভাবে পরিচালনা করুন, সুতরাং এই পোস্টে প্রদত্ত সামান্য পরিবর্তিত দোভাষী দিয়ে পরীক্ষা করে নিশ্চিত হন।
ইনপুট থাকার গ্যারান্টিযুক্ত:
- ম্যাচিং বন্ধনীগুলি
- কলামে একাধিক বন্ধনী নেই
- প্রতিটি লাইনে অক্ষরের একই সংখ্যা
- কমপক্ষে একটি লাইন
- একাধিক আই / ও (
!
বা।) সহ কোনও কলাম নেই?
) নির্দেশাবলী - প্রতিটি ভয়েসের জন্য নির্দেশাবলীর পরে একটি লাইনফিড অক্ষর
- উপরে বর্ণিত অক্ষর ব্যতীত অন্য কোনও অক্ষর নেই
আউটপুট ভাষা: বেফুঞ্জ -৩৩
বেফঞ্জ হ'ল একটি স্ট্যাক-ভিত্তিক ভাষা যার প্রোগ্রামের কাউন্টার (পিসি; বর্তমান নির্দেশের পয়েন্টার) দ্বিমাত্রিক গ্রিডে অবাধে সরানো। এটি ডানদিকে চলে যাওয়া উপরের বাম কোণে শুরু হয়। প্লেফিল্ডটি টেরয়েডাল, অর্থাত্ পিসি মুভমেন্ট উভয় প্রান্তকে ঘিরে রেখেছে। বেফুঞ্জের একটি স্ট্যাকও রয়েছে যা অসীম সংখ্যায় শূন্যে শুরু করা হয়। বেফুঞ্জের নিম্নলিখিত ক্রিয়াকলাপ রয়েছে:
আপনি বেফঞ্জ -৩৩ সংকলক / দোভাষীর নিম্নলিখিত বৈশিষ্ট্যগুলি ধরে নিতে পারেন:
- পূর্ণসংখ্যা সীমাহীন-নির্ভুলতা।
- এটি যে কোনও আকারের গ্রিডের অনুমতি দেয়।
- গ্রিড স্থানাঙ্কগুলি (এর জন্য
g
এবংp
) 0-ভিত্তিক।
স্কোরিং
বেফুঞ্জের প্রিলিপ্ট ইন্টারপ্রিটার তৈরি করার জন্য এবং এতে প্রিলিওড সোর্সটিকে হার্ডকোড দেওয়ার জন্য জমাগুলি প্রতিরোধ করতে, লক্ষ্যটি হবে বেফুঞ্জ উত্স কোডের আকারটি হ্রাস করা।
নীচে বেশিরভাগ প্রিলিওড প্রোগ্রাম সরবরাহ করা হয়েছে। আপনার অনুবাদক এই সমস্তটিতে চালিত হবে। আপনার স্কোর হ'ল বেফুঞ্জ প্রোগ্রামগুলির আকারগুলির সমষ্টি, যদি এগুলির সমস্তটি বৈধ থাকে।
আপনার অনুবাদককে এই পরীক্ষার কেসগুলির জন্য বিশেষত অনুকূলিত করা উচিত নয় (উদাহরণস্বরূপ তাদের জন্য হস্তাক্ষরিত বেফঞ্জ প্রোগ্রামগুলি হার্ডকডিং দ্বারা)। যদি আমি এটি করার কোনও উত্তর সন্দেহ করি তবে আমি ইনপুট পরিবর্তন করার বা অতিরিক্ত একটি তৈরি করার অধিকার সংরক্ষণ করি।
নমুনা ইনপুট
মুদ্রণ করুন n-1
নিচে 0
:
?(1-^!)
যৌক্তিক এবং:
? (0)
?(0 )
1 !
যৌক্তিক বা:
? (0)
? (0)
1 1 !
ননজেগটিভ সংখ্যার ইনপুট (যেমন মডুলো 2) এর সমতা পরীক্ষা করুন:
?(1-)
^ v
v1-^^-!
স্কয়ারটি ইনপুট:
^
^+ !
?(1-)
N ম ফিবোনাচি নাম্বারটি মুদ্রণ করুন , যেখানে n = 0
0 এর n = 1
সাথে মিল রয়েছে এবং 1:
0 v+v!
1 ^
?(1-)
সংকেত:
1) v # - !
vv (##^v^+)
?(# ^ ##
অ-নেতিবাচক ইনপুটগুলির জন্য বিভাগ:
1 (# 1) v # - 1+)
vv (##^v^+)
? v-(0 # ^ #
?
1+ 1-!
অবশ্যই, programণাত্মক সংখ্যার জন্য নমুনা প্রোগ্রামের আচরণ সুনির্দিষ্ট না করা সত্ত্বেও, আপনার প্রোগ্রামটি অবশ্যই সমস্ত ক্ষেত্রে একই আচরণ প্রদর্শন করবে।
অবশেষে, আপনার অনুবাদকটি অযৌক্তিকভাবে দীর্ঘ হওয়া উচিত নয়:
- এটি অবশ্যই স্ট্যাক এক্সচেঞ্জের পোস্টের মধ্যে থাকা উচিত
- এটি একটি সাধারণ ডেস্কটপ কম্পিউটারে 10 মিনিটের নিচে নমুনা ইনপুটগুলি প্রক্রিয়া করা উচিত।
নোট করুন যে প্রিলিউড বা বেফুঞ্জের জন্য একটি সংখ্যার ইনপুটটি একটি alচ্ছিক বিয়োগ চিহ্ন হিসাবে দেওয়া হবে যার পরে একটি নতুন লাইন পরে এক বা একাধিক দশমিক অঙ্ক হয়। অন্যান্য ইনপুট হ'ল অপরিজ্ঞাত আচরণ।
আপনি যে কোনও ভাষায় আপনার অনুবাদক লিখতে পারেন। সংক্ষিপ্ত অনুবাদিত বেফুঞ্জ কোড জিতেছে।
লিডারবোর্ড
- Sp3000 : 16430 বাইট
1
একটি লুপের অভ্যন্তরে রয়েছে, সুতরাং এটি ধাক্কা না দেওয়া হতে পারে। একটি 0 0 এর অসীম পরিমাণ থেকে স্ট্যাকগুলি থেকে শুরু হতে পারে।