উপসর্গ শিরোনামে, অপারেটর আর্গুমেন্টগুলির আগে উপস্থিত হয়, তাই আপনি ধরণের কল্পনা করতে পারেন যে অপারেটর কল করে next()
যা পুনরাবৃত্তি বলা হয়। ইনফিক্স স্বরলিপিতে অপারেটর আর্গুমেন্টগুলির মধ্যে চলে যায়, তাই আপনি এটি কেবল একটি পার্স গাছ হিসাবে কল্পনা করতে পারেন। পোস্টফিক্স নোটেশনে অপারেটর আর্গুমেন্টের পরে আসে, তাই আপনি এটি স্ট্যাক-ভিত্তিক হিসাবে কল্পনা করতে পারেন।
Anyfix স্বরলিপি, অপারেটর জন্য যে কোন জায়গায় যেতে পারেন * । যদি কোনও অপারেটর দেখায় এবং পর্যাপ্ত আর্গুমেন্ট না থাকে তবে পর্যাপ্ত যুক্তি না হওয়া পর্যন্ত অপারেটর অপেক্ষা করে। এই চ্যালেঞ্জের জন্য, আপনাকে একটি খুব বেসিক যেকোন ফিক্স মূল্যায়নকারী বাস্তবায়ন করতে হবে। (নোট যে anyfix একটি বিনোদনমূলক ভাষা আমি পরিত্যক্ত যে আপনার সাথে চারপাশে খেলা যায় এখানে বা খুঁজে বার করো এখানে )
আপনাকে নিম্নলিখিত কমান্ডগুলি সমর্থন করতে হবে:
(আধ্যাত্মিকতা 1)
- প্রতিলিপি
- নেতিবাচক
(আধ্যাত্মিকতা 2)
- সংযোজন
- গুণ
- সমতা: রিটার্ন
0
বা1
।
আপনি এই কমান্ডগুলির জন্য যে কোনও পাঁচটি অ-শ্বেত স্পেস প্রতীক ব্যবহার করতে বেছে নিতে পারেন। পরীক্ষামূলক উদ্দেশ্যে, আমি "
সদৃশ, ×
গুণ এবং আরও +
হিসাবে ব্যবহার করব ।
আক্ষরিক জন্য, আপনার কেবল অ-নেতিবাচক পূর্ণসংখ্যার সমর্থন করা দরকার তবে আপনার দোভাষীকে অবশ্যই সমস্ত সংখ্যক (আপনার ভাষার (যুক্তিসঙ্গত) পূর্ণসংখ্যার পরিসীমা) অন্তর্ভুক্ত রাখতে সক্ষম হতে হবে।
এখানে একটি উদাহরণ কটাক্ষপাত করা যাক: 10+5
। স্টোরেজটি একটি সারি হিসাবে নয়, স্ট্যাক হিসাবে আচরণ করা উচিত। সুতরাং প্রথমে, স্ট্যাকটি শুরু হয় []
এবং সারি অপারেটর তালিকা শুরু হয় []
। তারপরে, আক্ষরিক 10
মূল্যায়ন করা হয় যা স্ট্যাকটি তৈরি করে [10]
। এর পরে, অপারেটরটি +
মূল্যায়ন করা হয়, যার জন্য দুটি যুক্তি প্রয়োজন requires তবে, স্ট্যাকের উপর কেবল একটি যুক্তি রয়েছে, তাই সারিযুক্ত অপারেটরের তালিকা হয়ে যায় ['+']
। তারপরে, আক্ষরিক 5
মূল্যায়ন করা হয় যা স্ট্যাকটি তৈরি করে [10, 5]
। এই মুহুর্তে, অপারেটরটিকে '+'
মূল্যায়ন করা যেতে পারে তাই এটি স্ট্যাক [15]
এবং সারি তৈরি করে []
।
চূড়ান্ত ফলাফল হওয়া উচিত [15]
জন্য + 10 5
, 10 + 5
এবং 10 5 +
।
এর একটি কঠিন উদাহরণ কটাক্ষপাত করা যাক: 10+"
। স্ট্যাক এবং কিউ হিসাবে শুরু []
এবং []
। 10
প্রথমে মূল্যায়ন করা হয় যা স্ট্যাক তৈরি করে [10]
। এরপরে, +
মূল্যায়ন করা হয়, যা স্ট্যাকটি পরিবর্তন করে না (কারণ পর্যাপ্ত যুক্তি নেই) এবং সারি তৈরি করে ['+']
। তারপরে, "
মূল্যায়ন করা হয়। এটি তাত্ক্ষণিকভাবে চলতে পারে এটি স্ট্যাক তৈরি করে [10, 10]
। +
এখন মূল্যায়ন করা যায় যাতে স্ট্যাকটি হয়ে যায় [20]
এবং সারি হয় []
। চূড়ান্ত ফলাফল [20]
।
অপারেশন অর্ডার সম্পর্কে কি?
একনজরে দেখে নেওয়া যাক ×+"10 10
। স্ট্যাক এবং সারি উভয় হিসাবে শুরু []
:
×
: স্ট্যাকটি অপরিবর্তিত এবং সারি হয়ে যায়['×']
।+
: স্ট্যাকটি অপরিবর্তিত এবং সারি হয়ে যায়['×', '+']
।"
: স্ট্যাকটি অপরিবর্তিত এবং সারি হয়ে যায়['×', '+', '"']
।10
: স্ট্যাক হয়ে যায়[10]
। যদিও×
এটি প্রদর্শিত হওয়ার আগে থেকেই মূল্যায়ন করা প্রথম অপারেটর হওয়া উচিত,"
তাত্ক্ষণিকভাবে চালানো যেতে পারে এবং অপারেটরগুলির মধ্যে এটির আগে কেউই এটি করতে পারে না, তাই এটি মূল্যায়ন করা হয়। স্ট্যাকটি হয়ে যায়[10, 10]
এবং সারি হয়['×', '+']
।×
এখন মূল্যায়ন করা যেতে পারে, যা স্ট্যাক[100]
এবং সারি তৈরি করে['+']
।10
: স্ট্যাকটি হয়ে যায়[100, 10]
, যা+
মূল্যায়নের অনুমতি দেয় । স্ট্যাকটি হয়ে যায়[110]
এবং সারি হয়[]
।
চূড়ান্ত ফলাফল [110]
।
এই বিক্ষোভগুলিতে ব্যবহৃত আদেশগুলি যে কোনও ফিক্স ভাষার সাথে সামঞ্জস্যপূর্ণ; তবে, আমার দোভাষীটিতে বাগের কারণে শেষ উদাহরণটি কাজ করবে না। (অস্বীকৃতি: আপনার জমাগুলি কোনও ফিক্স দোভাষীতে ব্যবহৃত হবে না)
চ্যালেঞ্জ
৫ টি অ-হোয়াইটস্পেস অ-অঙ্কের অক্ষরের একটি সেট নির্বাচন করুন এবং উপরের স্পেসিফিকেশন অনুসারে কোনও যেকোন ফিক্স ইন্টারপ্রেটার তৈরি করুন। আপনার প্রোগ্রামটি হয় একক অ্যারে আউটপুট করতে পারে বা এর দ্বারা থাকা মানকে; এটি গ্যারান্টিযুক্ত যে মানগুলির স্ট্যাক কেবলমাত্র মৃত্যুদন্ডের শেষে একক মান ধারণ করে এবং কার্যকর করা শেষে অপারেটরগুলির সারি খালি থাকবে।
এটি কোড-গল্ফ তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।
পরীক্ষার কেস
এই পরীক্ষার বিষয় জন্য, সদৃশ "
, নেতিবাচক -
, উপরন্তু হল +
, গুণ হল ×
, এবং সমতা হয় =
।
Input -> Output
1+2×3 -> 9
1"+"+ -> 4
2"××" -> 16
3"×+" -> 18
3"+×" -> 36
123"= -> 1 ("= always gives 1)
1+2=3 -> 1
1"=2+ -> 3
1-2-+ -> -3
-1-2+ -> 3 (hehe, the `-1` becomes `+1` at the `-` rather than making the `2` a `-1`)
+×"10 10 -> 200 (after the 10 is duplicated (duplication is delayed), 10 + 10 is performed and then 20 * 10, giving 200)
বিধি
- স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
- আপনি চাইলে যে কোনও ফিক্স অফিসিয়াল দোভাষী এবং গল্ফ নিতে পারেন। ভয়াবহভাবে হারানোর প্রত্যাশা
স্ট্রিং হিসাবে ইনপুট দেওয়া হবে এবং অ্যারের হিসাবে আউটপুট দেওয়া হবে, একটি একক পূর্ণসংখ্যা, উভয়েরই স্ট্রিং প্রতিনিধিত্ব করে। আপনি ধরে নিতে পারেন যে ইনপুটটিতে কেবল ফাঁকা স্থান, অঙ্ক এবং আপনার চয়ন করা 5 টি অক্ষর থাকবে।
* আসলে না
0
এবং 1
?
×+"10 10
পরীক্ষার ক্ষেত্রে অন্তর্ভুক্ত করা উচিত , বা অন্য কোনও উদাহরণ যা 1) একটি সাদা স্থান এবং 2) এর ব্যবহারকে বিলম্ব করে সদৃশ অপারেটরটির (দুটি জিনিস যা আমি পুরোপুরি মিস করেছি)।