মেটা-পটভূমি
এটি পাজলিংয়ের উপর একটি প্রশ্ন হিসাবে সেট করা হয়েছিল এবং তাত্ক্ষণিক প্রতিক্রিয়াটি ছিল "ভাল, কেউ কেবল কম্পিউটারের মাধ্যমে এটি সমাধান করবে"। এটি সমাধানের জন্য একটি প্রোগ্রাম কতটা জটিল হতে হবে তা নিয়ে বিতর্ক ছিল। ঠিক আছে, "এই প্রোগ্রামটি কতটা জটিল হতে হবে" কোড-গল্ফের সংজ্ঞা হিসাবে প্রায় , তাই সম্ভবত পিপিসিজি বিষয়টি নিষ্পত্তি করতে পারে?
পটভূমি
একটি ম্যাচস্টিক সমীকরণ মূলত একটি সাধারণ গাণিতিক সমীকরণ, তবে যেখানে অঙ্কগুলি এবং অপারেটরগুলি টেবিলে ম্যাচস্টিক রেখে শারীরিকভাবে নির্মিত হয়। (এখানে ম্যাচস্টিকগুলির মূল প্রাসঙ্গিক বৈশিষ্ট্যটি হ'ল এগুলি মোটামুটি অনমনীয় এবং ধ্রুব দৈর্ঘ্য রয়েছে; কখনও কখনও লোকেরা পরিবর্তে অন্যান্য বস্তু যেমন সুতির সোয়াব ব্যবহার করেন))
এই চ্যালেঞ্জের জন্য, ম্যাচস্টিকগুলি কীভাবে সাজানো হয় তার জন্য আমাদের নির্দিষ্ট বিধিগুলি সংজ্ঞায়িত করার দরকার নেই (লিঙ্কযুক্ত চ্যালেঞ্জের মতো); পরিবর্তে, আমরা কেবলমাত্র একটি নির্দিষ্ট সংখ্যার মূল্যায়ন করে এমন একটি এক্সপ্রেশন উপস্থাপন করতে আমাদের কতটি ম্যাচস্টিকের প্রয়োজন তা যত্নশীল।
কাজটি
অঙ্কগুলি এবং গাণিতিক অপারেটরগুলির বর্ণমালা এখানে আপনি ব্যবহার করতে পারেন, প্রত্যেকটির ম্যাচস্টিকের জন্য ব্যয় রয়েছে:
0
, 6 ম্যাচস্টিকের দাম1
, 2 ম্যাচস্টিকের দাম2
, 5 ম্যাচস্টিকের দাম3
, 5 ম্যাচস্টিকের দাম4
4 টি ম্যাচস্টিকের দাম5
, 5 ম্যাচস্টিকের দাম6
, 6 ম্যাচস্টিকের দাম7
3 টি ম্যাচস্টিকের দাম8
7 টি ম্যাচস্টিকের দাম9
, 6 ম্যাচস্টিকের দাম+
, 2 ম্যাচস্টিকের দাম-
, 1 ম্যাচস্টিকের দাম×
, 2 ম্যাচস্টিকের দাম
(আপনি যদি চান না তবে আপনার প্রোগ্রামের আউটপুট ×
হিসাবে *
আপনি যেমন উপস্থাপন করতে পারেন নন-এএসসিআইআই অক্ষর ব্যবহার করা এড়ানোর জন্য। বেশিরভাগ এনকোডিংগুলিতে, এর ×
চেয়ে বেশি বাইট নেয় *
, এবং তাই আমি ধারণা করি যে বেশিরভাগ প্রোগ্রামগুলি এই প্রচ্ছদের সুবিধা নিতে চাইবে ।)
আপনাকে এমন একটি প্রোগ্রাম লিখতে হবে যা কোনও সংকেত পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে (যে কোনও যুক্তিসঙ্গত মাধ্যমে ), এবং এমন একটি অভিব্যক্তি তৈরি করে যা সেই পূর্ণসংখ্যাকে আউটপুট হিসাবে মূল্যায়ন করে (আবার কোনও যুক্তিসঙ্গত মাধ্যমে)। উপরন্তু, অভিব্যক্তি nontrivial হতে হবে: এটা অন্তত একটি অপারেটর থাকা আবশ্যক +
, -
বা, ×
। পরিশেষে, আপনি যে আউটপুটটি আউটপুট দেন তা হ'ল মোট আউটপুটগুলির মধ্যে মোট ম্যাচস্টিক ব্যয়ের ক্ষেত্রে অবশ্যই সস্তা (বা সস্তার জন্য বাঁধা) হতে হবে যা অন্যথায় নির্দিষ্টকরণের সাথে সম্মতি দেয়।
ব্যাখ্যা
- আপনি এক সারি একাধিক অঙ্ক আউটপুট করে একাধিক-সংখ্যা সংখ্যা গঠন করতে পারেন (উদাঃ
11-1
উত্পাদন করার জন্য একটি বৈধ আউটপুট10
)। পুরোপুরি সুনির্দিষ্টভাবে বলা যায়, ফলস্বরূপ সংখ্যাটি দশমিক অর্থে ব্যাখ্যা করা হয়। এই ধরণের কনটেনটেশন কোনও ক্রিয়াকলাপ নয় যা মধ্যবর্তী ফলাফলগুলিতে কাজ করে; কেবল আসল অঙ্কগুলিতে যা মূল অভিব্যক্তিতে উপস্থিত হয়। - এই চ্যালেঞ্জের উদ্দেশ্যে
+
,-
এবং×
ইনফিক্স অপারেটর; তাদের বাম এবং ডানদিকে একটি যুক্তি প্রয়োজন। আপনার এগুলি প্রিফিক্স অবস্থানে+5
বা যেমন ব্যবহার করার অনুমতি নেই-8
। - আপনার কাছে প্রথম বন্ধনী (বা অন্য কোনও উপায়ে নিয়ন্ত্রণের উপায়) উপলব্ধ নেই। অভিব্যক্তিটি সাধারণ ডিফল্ট অগ্রাধিকার নিয়ম অনুসারে মূল্যায়ন করে (গুণগুলি প্রথমে ঘটে এবং তারপরে সংযোজন এবং বিয়োগফলগুলি বাম থেকে ডানে মূল্যায়ন করা হয়)।
- উপরে তালিকাভুক্ত বাদে আপনার গাণিতিক অপারেটর বা ধ্রুবকগুলির অ্যাক্সেস নেই; "পার্শ্বীয় চিন্তাভাবনা" সমাধানগুলি প্রায়শই পাজলিং-এ গৃহীত হয়, তবে কম্পিউটারটি নিজেই এগুলি নিয়ে আসে এবং পিপিসিজিতে এখানে সমাধান সঠিক কিনা বা না তা আমরা উদ্দেশ্যমূলক হতে চাই তা বোঝা যায় না।
- সাধারণ পূর্ণসংখ্যার ওভারফ্লো নিয়মগুলি প্রয়োগ হয়: আপনার সমাধানটি অবশ্যই আপনার ভাষার একটি অনুমানমূলক (বা সম্ভবত বাস্তব) সংস্করণে নির্বিচারে বৃহত পূর্ণসংখ্যার জন্য কাজ করতে সক্ষম হতে হবে যেখানে সমস্ত সংখ্যক ডিফল্টরূপে সীমাহীন হয়, তবে যদি আপনার প্রোগ্রামটি বাস্তবায়নের কারণে অনুশীলনে ব্যর্থ হয় বৃহত্তর পূর্ণসংখ্যার সমর্থন না করা, এটি সমাধানটিকে অকার্যকর করে না।
- আপনি যদি একাধিকবার একই অঙ্ক বা অপারেটর ব্যবহার করেন তবে প্রতিবার এটি ব্যবহার করার সময় আপনাকে তার ম্যাচস্টিক ব্যয় দিতে হবে (কারণ স্পষ্টতই, আপনি টেবিলের দুটি পৃথক স্থানে একই শারীরিক ম্যাচস্টিকগুলি পুনরায় ব্যবহার করতে পারবেন না)।
- সময়সীমা নেই; নিষ্ঠুর শক্তি সমাধান গ্রহণযোগ্য। (যদিও আপনার কাছে যদি এমন সমাধান রয়েছে যা নিষ্ঠুর শক্তির চেয়ে দ্রুততর হয় তবে এটি দীর্ঘতর হলেও পোস্টটি নির্দ্বিধায় মনে করুন; বিকল্প পদ্ধতির তুলনা কীভাবে করা যায় তা সবসময় আকর্ষণীয় seeing)
- যদিও আপনার কোডটির ব্যাখ্যা লেখার প্রয়োজন নেই , এটি সম্ভবত একটি ভাল ধারণা হতে পারে; কোড-গল্ফ সমাধানগুলি প্রায়শই পড়তে খুব কঠিন হয় (বিশেষত এমন লোকদের কাছে যাদের তারা লেখা আছে তাদের সাথে পরিচিত নয়) এবং এটি কীভাবে কাজ করে তা আপনি বুঝতে না পারলে কোনও সমাধানের মূল্যায়ন (এবং এভাবে ভোট দেওয়া) কঠিন হতে পারে।
বিজয় শর্ত
হিসেবে কোড-গলফ চ্যালেঞ্জ, তার চেয়ে কম বাইট সঙ্গে উত্তর ভাল মনে করা হয়। তবে, যথারীতি, ভিন্ন ভিন্ন পদ্ধতির সাথে বা নির্দিষ্ট ভাষায় উত্তরগুলি পোস্ট করতে নির্দ্বিধায় তারা নির্দিষ্ট অন্যান্য ভাষার চেয়ে আরও ভার্বোস হলেও; গল্ফের লক্ষ্যটি হ'ল আপনি কোনও নির্দিষ্ট প্রোগ্রামকে কতটা অপ্টিমাইজ করতে পারবেন তা দেখার জন্য এবং এইভাবে কাজগুলি করার ফলে আমাদের প্রচুর সম্ভাব্য প্রোগ্রামগুলি অনুকূলিত হতে পারে। সুতরাং কেউ যদি সম্পূর্ণ ভিন্ন পদ্ধতির, বা সম্পূর্ণ আলাদা ভাষা ব্যবহার করে কোনও সমাধান জমা দেয় এবং আরও সংক্ষিপ্ত উত্তর পেয়ে থাকে তবে হতাশ হবেন না; এটি ভাল হতে পারে যে আপনার উত্তরটি আরও অনুকূলিত হয়েছে এবং আরও দক্ষতা দেখায় এবং পিপিসি-র ভোটাররা প্রায়শই এটির প্রশংসা করেন।