এই চ্যালেঞ্জটি এমএটিএল ভাষার কিছু বৈশিষ্ট্যের সাথে সম্পর্কিত, মে 2018 এর ভাষা অনুষ্ঠানের অংশ হিসাবে । সংযুক্ত চ্যালেঞ্জ : ফাংশন ক্লিপবোর্ড: পেস্ট করুন ।
ভূমিকা
এমএটিএল এর বেশ কয়েকটি ক্লিপবোর্ড রয়েছে , যেখানে আপনি পরে পুনরুদ্ধার করার জন্য মান (অনুলিপি) সংরক্ষণ করতে পারেন (পেস্ট করুন)। কিছু ক্লিপবোর্ডগুলি স্বয়ংক্রিয় হয় , যার অর্থ অনুলিপি কিছু ইভেন্ট দ্বারা স্বয়ংক্রিয়ভাবে ট্রিগার হয়। এই চ্যালেঞ্জটি ফাংশন-ইনপুট ক্লিপবোর্ড , বা কেবল ফাংশন ক্লিপবোর্ড নামে পরিচিত একটি স্বয়ংক্রিয় ক্লিপবার্ডের উপর দৃষ্টি নিবদ্ধ করে ।
এই ক্লিপবোর্ডটি সাধারণ, ইনপুট গ্রহণের ক্রিয়াকলাপে চারটি সাম্প্রতিক কলগুলিতে ইনপুটগুলি সঞ্চয় করে। সাধারণ ফাংশনগুলি এমএটিএল-এ সর্বাধিক সাধারণ ফাংশন। ইনপুট নেওয়ার অর্থ হ'ল ফাংশনটিতে কমপক্ষে একটি ইনপুট লাগে (যে ফাংশনগুলি কোনও ইনপুট নেয় না তা ফাংশন ক্লিপবোর্ড দ্বারা বিবেচনা করা হয় না)।
এটি নিম্নলিখিত উদাহরণগুলির সাথে সর্বোত্তমভাবে ব্যাখ্যা করা হয়েছে, যা দুটি সাধারণ ফাংশন ব্যবহার করে:
+
, যা স্ট্যাক থেকে দুটি সংখ্যা পপ করে এবং তাদের যোগফলকে ধাক্কা দেয়।U
, যা একটি নম্বর পপ করে এবং তার বর্গকে ধাক্কা দেয়।
উদাহরণ 1 :
3 2 + 6 + 12 4 U + +
ফলাফল উত্পাদন করে 39
। কোডটি নিম্নলিখিতভাবে ব্যাখ্যা করা হয়েছে:
- সংখ্যা আক্ষরিক যেমন
3
বা12
স্ট্যাকের দিকে ধাক্কা - যেমন
+
তাদের ইনপুটগুলি পপ করে এবং তাদের আউটপুটগুলিকে স্ট্যাকের দিকে ঠেলে দেয় Fun
কালানুক্রমিক ক্রমে ফাংশন কলগুলি হল:
3 2 +
দেয়5
5 6 +
দেয়11
4 U
দেয়16
12 16 +
28
11 28 +
দেয়39
।
ক্লিপবোর্ডটি চারটি তালিকার একটি তালিকা হিসাবে দেখা যেতে পারে। প্রতিটি অভ্যন্তরীণ তালিকায় প্রথমে সাম্প্রতিকতম কলগুলির সাথে একটি ফাংশন কলের ইনপুট থাকে । প্রতিটি অভ্যন্তরের তালিকার মধ্যে, ইনপুটগুলি তাদের মূল ক্রমে থাকে ।
সুতরাং কোডটি চালনার পরে ক্লিপবোর্ডের সামগ্রীগুলি (পাইথন নোটেশনে):
[[11, 28], [12, 16], [4], [5, 6]]
উদাহরণ 2 :
10 20 U 30 +
সংখ্যা 10
এবং 430
স্ট্যাকের পাতা । স্ট্যাকটি প্রোগ্রামের শেষে নীচে থেকে উপরে প্রদর্শিত হয়।
ফাংশন কলগুলি হয়
20 U
দেয়400
400 30 +
দেয়430
যেহেতু কেবলমাত্র দুটি ফাংশন কল রয়েছে, তাই ক্লিপবোর্ডকে সংজ্ঞায়িত করে কিছু অভ্যন্তরীণ তালিকা খালি থাকবে । 10
কোনও ফাংশনে ইনপুট হিসাবে কীভাবে ব্যবহৃত হয় তাও নোট করুন।
সুতরাং, কোডটি চালানোর পরে ক্লিপবোর্ডের সামগ্রীগুলি হ'ল:
[[400, 30], [20], [], []]
উদাহরণ 3 (অবৈধ):
10 20 + +
অবৈধ হিসাবে বিবেচিত হয়, কারণ দ্বিতীয়টিতে একটি ইনপুট +
অনুপস্থিত (এমএটিএল-এ এটি স্পষ্টভাবে ব্যবহারকারীর ইনপুটকে ট্রিগার করবে)।
চ্যালেঞ্জ
ইনপুট : সংখ্যার আক্ষরিক সহ একটি স্ট্রিং এস+
এবংU
স্পেস দ্বারা পৃথক করা।
আউটপুট : স্ট্রিং এস এর মূল্যায়ন করার পরে ফাংশন ক্লিপবোর্ডের বিষয়বস্তু ।
ব্যাখ্যা:
- অঙ্ক ব্যতীত functions ফাংশনগুলি উপস্থাপন করতে আপনি যে কোনও দুটি ধারাবাহিক প্রতীক ব্যবহার করতে পারেন। এছাড়াও, আপনি স্থানের পরিবর্তে পৃথক হিসাবে কোনও সামঞ্জস্যপূর্ণ প্রতীক ব্যবহার করতে পারেন।
- কেবলমাত্র দুটি নির্দেশিত ফাংশন বিবেচনা করা হবে।
- ইনপুট স্ট্রিংটিতে কমপক্ষে একটি নম্বর আক্ষরিক এবং কমপক্ষে একটি ফাংশন থাকবে।
- সমস্ত সংখ্যা সম্ভবত একাধিক সংখ্যার সাথে ইতিবাচক পূর্ণসংখ্যার হবে।
- এটি উদাহরণস্বরূপ 2 যেমন কিছু সংখ্যক আক্ষরিক কোনও ফাংশন দ্বারা ব্যবহৃত হয় না।
- অতিরিক্ত সংখ্যার প্রয়োজন ছাড়াই ইনপুটটি বৈধ কোড হওয়ার গ্যারান্টিযুক্ত। উদাহরণস্বরূপ 3 স্ট্রিং কখনই ঘটবে না।
- আউটপুটে খালি অভ্যন্তরীণ তালিকাগুলি বাদ দেওয়া যেতে পারে। উদাহরণস্বরূপ 2 ফলাফল হতে পারে
[[400, 30], [20]]
- যে কোনও যুক্তিসঙ্গত, দ্ব্যর্থহীন আউটপুট ফর্ম্যাট গ্রহণযোগ্য। উদাহরণস্বরূপ, ভিতরের বিভাজক এবং বাইরের বিভাজক হিসেবে সেমিকোলন হিসেবে কমা দিয়ে একটি স্ট্রিং:
400,30;20;;
।
অতিরিক্ত নিয়ম:
ইনপুট এবং আউটপুট যে কোনও যুক্তিসঙ্গত উপায়ে নেওয়া যেতে পারে ।
কোনও প্রোগ্রামিং ভাষায় প্রোগ্রাম বা ফাংশন অনুমোদিত । স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ ।
বাইটস মধ্যে সংক্ষিপ্ত কোড।
পরীক্ষার মামলা
Input
Output
3 2 + 6 + 12 4 U + +
[[11, 28], [12, 16], [4], [5, 6]]
15 3 4 + 2 U 8 + U +
[[7, 144], [12], [4, 8], [2]]
3 6 9 12 + + 10 8 U 6
[[8], [6, 21], [9, 12], []]
8 41 12 25 4 5 33 7 9 10 + + + + + + + +
[[41, 105], [12, 93], [25, 68], [4, 64]]
10 1 1 + U U U U U
[[65536], [256], [16], [4]]
M
?
M
। আমি এটি "পেস্ট" চ্যালেঞ্জটিতে করব
[[28, 11], [16, 12], [4], [6, 5]]
প্রথম উদাহরণস্বরূপ বৈধ আউটপুট?