মূল প্রোগ্রামিং ল্যাঙ্গুয়েজ কোঁকড়াতে, প্রোগ্রামগুলি সম্পূর্ণরূপে কোঁকড়া ধনুর্বন্ধনী {}
এবং সেমিকোলন নিয়ে গঠিত ;
। এই নম্র টুলসেট সত্ত্বেও, কোঁকড়ির কাছে আক্ষরিকাগুলি রয়েছে যা কোনও অবৈধ পূর্ণসংখ্যাকে উপস্থাপন করতে পারে। বিনীত অবিচ্ছিন্নভাবে পড়ার জন্য ফর্ম্যাটটি কিছুটা শক্ত, তবে আমাদের জন্য রূপান্তর করতে কিছু কোড লিখি।
সংখ্যার ফর্ম্যাট
কোঁকড়া সংখ্যা নিম্নলিখিত নিয়ম অনুযায়ী কাঠামোগত হয়:
- একটি সেমিকোলন যুক্ত করা সংখ্যায় একটি যোগ করে।
- কোঁকড়া ধনুর্বন্ধনী মধ্যে সংযুক্ত একটি সংখ্যা চার দ্বারা গুণিত হয়।
- কোঁকড়া-ব্রেস গ্রুপগুলি নেস্টেড হতে পারে তবে কনটেনটেটেড নয়। ধনুর্বন্ধনী অবশ্যই সঠিকভাবে মেলে।
- কোঁকড়া ধনুর্বন্ধনী সংকলনের একটি সেটের বাইরে সেমিকোলনগুলি পরে আসতে হবে, এর আগে নয়।
- বিশ্লেষণে অস্পষ্টতা এড়াতে, একটি সংখ্যা সর্বদা একটি কোঁকড়া ধনুর্বন্ধনী সঙ্গে শুরু করা উচিত।
কিছু উদাহরণ:
{;;} 2*4 = 8
{{;};}; (1*4+1)*4+1 = 21
{};;; 0*4+3 = 3
(নোট করুন যে নিয়ম 5 এর অর্থ 0 থেকে 3 নম্বরগুলি অবশ্যই একটি খালি জোড়া কোঁকড়ানো ধনুর্বন্ধনী দিয়ে শুরু করা উচিত))
এবং কিছু অবৈধ উদাহরণ:
{{;}{;;}} Curly brace groups side-by-side, not nested
{;}} Unmatched brace
{;{;}} Semicolon before curly-brace group
;;; Number does not start with curly brace
কোঁকড়া সংখ্যার জন্য এখানে একটি বিএনএফ ব্যাকরণ রয়েছে:
<number> ::= "{" <inner> "}" <semis>
<inner> ::= <semis>
| <number>
<semis> ::= ";" <semis>
| ""
মত নাম্বার {;;;;}
(ক সারিতে অধিক 3 সেমিকোলন) অথবা {{};}
(অপ্রয়োজনীয় খালি বক্রবন্ধনী গোষ্ঠী) বলা হয় অপ্রকৃত কোঁকড়া নম্বর। তারা উপরের ব্যাকরণকে মান্য করে এবং সাধারণ উপায়ে মূল্যায়ন করা যায় তবে তারা সংক্ষিপ্ত উপস্থাপনেও সক্ষম (উপরের উদাহরণগুলির জন্য, {{;}}
এবং{;}
যথাক্রমে)।
চ্যালেঞ্জ
এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা স্ট্রিংকে ইনপুট করে / গ্রহণ করে। যদি স্ট্রিংটি দশমিক দশমিক পূর্ণসংখ্যার হয় তবে সেই পূর্ণসংখ্যার জন্য আউটপুট / যথাযথ (অর্থাত্ সংক্ষিপ্ততম সম্ভব) কোঁকড়া প্রতিনিধিত্ব করুন। যদি স্ট্রিংটি একটি কোঁকড়ানো নম্বর হয় তবে আউটপুট / তার দশমিক উপস্থাপনা ফেরত দেয়।
এসটিডিআইএন, কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন প্যারামিটারের মাধ্যমে ইনপুট পাওয়া যায়। এটা অবশ্যই একটি স্ট্রিং হতে ; এটি হল, আপনি কোনও ফাংশন লিখতে পারবেন না যা কুঁকড়ানো সংখ্যার জন্য স্ট্রিং গ্রহণ করে তবে দশমিক সংখ্যার জন্য পূর্ণসংখ্যার জন্য।
আউটপুট STDOUT এ মুদ্রিত বা ফাংশন থেকে ফিরে আসতে পারে। একটি ফাংশন হতে পারে যখন পূর্ণসংখ্যার ফিরে আসতে , বা এটি সব পরিস্থিতিতে স্ট্রিং ফিরে আসতে পারে।
আপনার প্রোগ্রামকে খারাপ ইনপুট (ফর্ম্যাটিং নিয়ম, ভাসমান পয়েন্ট সংখ্যা, নেতিবাচক পূর্ণসংখ্যার, এলোমেলো পাঠ্যগুলি ভেঙে এমন কোঁকড়া সংখ্যা) পরিচালনা করতে হবে না এবং এটি হয় না হ্যান্ডেল হবে অনুচিত কোঁকড়া সংখ্যাগুলি হ্যান্ডেল করার প্রয়োজন নেই (তবে নীচে দেখুন)। ইনপুটটিতে কেবল মুদ্রণযোগ্য এএসসিআইআই অক্ষর থাকবে।
স্কোরিং
বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। যদি আপনার প্রোগ্রামটি নিম্নলিখিত দুটি করতে পারে :
- সঠিকভাবে অনুচিত কোঁকড়া সংখ্যা হ্যান্ডেল করুন এবং
- যখন একটি কোঁকড়ানো নম্বর দেওয়া হয়, কোনও অতিরিক্ত অক্ষর নেই যা উপেক্ষা করুন
{};
তারপরে আপনার স্কোর থেকে 10% বিয়োগ করুন। (পূর্ণসংখ্যার ইনপুটটিতে কখনই বহিরাগত অক্ষর থাকবে না, এমনকি বোনাসের জন্যও))
পরীক্ষার মামলা
Input Output
{;;} 8
{{;};}; 21
{};;; 3
{{{{;}}};} 260
{} 0
4 {;}
17 {{;}};
1 {};
0 {}
96 {{{;};;}}
বোনাসের জন্য:
{};;;;; 5
{{;;;;};;} 72
c{u;r;l}y;! 9
42{;} ;;;; 8
দ্রষ্টব্য: কোঁকড়া এখনও প্রয়োগ করা হয়নি। তবে এই প্রশ্নটি যদি ভাল করে তবে আমি এটি আরও বিকাশ করতে পারি।