কাকুরো কম্বিনেশনস
যেহেতু আমি মানসিক পাটিগণিত করতে পারি না, তাই আমি প্রায়শই কাকুরো ধাঁধাটির সাথে লড়াই করি , যার জন্য ভুক্তভোগীর জন্য বার বার কাজ করা প্রয়োজন যা 1 থেকে 9 পরিসরের মধ্যে পৃথক সংখ্যাগুলি 1 সহ 45 এর মধ্যে অন্য সংখ্যার সমষ্টি, যখন আপনি জানেন কীভাবে অনেক সংখ্যা আছে। উদাহরণস্বরূপ, আপনি যদি 3 নম্বর থেকে 23 কীভাবে পেতে চান তা জানতে চাইলে কেবল উত্তরটি 6 + 8 + 9. হয় (আপনি যদি এর সাথে পরিচিত হন তবে এটি হত্যাকারী সুডোকু হিসাবে একই ধারণা)।
কখনও কখনও আপনি যেমন যে সংখ্যা আরও 1 টি তথ্য, থাকবে না পারেন, মাত্র 2 সংখ্যায় 8 অর্জনে উপস্থিত থাকা, এইভাবে, আপনি শুধুমাত্র 2+ 6 এবং 3 +5 ব্যবহার করতে পারেন (আপনি 4 +4 ব্যবহার করতে পারবেন না, কারণ তারা স্বতন্ত্র নয়)। বিকল্পভাবে, এটি হতে পারে যে আপনি ইতিমধ্যে সমাধানটিতে একটি 3 পেয়েছেন, এবং তাই 3 সংখ্যায় 19 এর মতো কিছু অবশ্যই 3 + 7 + 9 হওয়া উচিত।
আপনার কাজ হ'ল একটি প্রোগ্রাম লিখুন যা একটি নির্দিষ্ট আদেশে, কঠোর বিন্যাসে, কঠোর বিন্যাসে, প্রদত্ত সমস্যার সমস্ত সম্ভাব্য সমাধানের তালিকা করে।
ইনপুট
আপনার সমাধানটি স্ট্যান্ডিন, একটি কমান্ড লাইন আর্গুমেন্ট, কোনও ক্রিয়াকলাপের জন্য একটি যুক্তি, স্ট্যাকের উপর একটি মূল্য রেখে যাওয়া বা আপনার পছন্দসই রহস্যময় ভাষাতে যে পাগলামি ব্যবহার করে তা একক ASCII স্ট্রিং হিসাবে ইনপুটগুলি গ্রহণ করতে পারে । স্ট্রিং ফর্ম হয়
number_to_achieve number_of_numbers_required list_of_rejected_numbers list_of_required_numbers
প্রথম 2 টি আর্গুমেন্টগুলি যথাযথ বেস-10 অ-নেতিবাচক অ-শূন্য পূর্ণসংখ্যার যথাক্রমে 1 থেকে 45 এবং 1 থেকে 9 রেঞ্জের (দশমিক পয়েন্ট ব্যবহার করে অবৈধ ইনপুট হবে), দুটি তালিকা কেবল কোনও সংখ্যার সাথে একত্রে আঁকানো বিন্দু ছাড়াই পুনরাবৃত্তি ব্যতীত কোনও বিশেষ অর্ডার, বা '0' না থাকলে খালি তালিকা রয়েছে। তালিকাগুলির মধ্যে ভাগ করে নেওয়া কোনও সংখ্যা (0 ব্যতীত) থাকতে পারে না। ডিলিমিটারগুলি একক স্পেস।
আউটপুট
আপনার আউটপুটটি অবশ্যই এমন একটি লাইন দিয়ে শুরু করতে হবে যাতে সম্ভাব্য সমাধানের সংখ্যা রয়েছে। আপনার প্রোগ্রামটি অবশ্যই প্রতিটি ক্রমবর্ধমান উল্লেখযোগ্য অঙ্ক অনুসারে সাজানো লাইন-ব্রেকের সীমিত সমাধানগুলি মুদ্রণ করতে হবে, যেখানে প্রতিটি ডিজিট এমন অবস্থানে রাখা হয় যদি আপনি 1 থেকে 9 নম্বর তালিকাভুক্ত করেন তবে নীচের উদাহরণগুলি আশা করি এই স্পষ্ট করে দেবে।
যদি কোনও অবৈধ ইনপুট সরবরাহ করা থাকে তবে আমি আপনার প্রোগ্রামটি কী করে সে বিষয়ে আমার খেয়াল নেই, যদিও আমি এটি আমার বুট সেক্টরটি শূন্য না করি।
উদাহরণ
এই উদাহরণ ইনপুট জন্য
19 3 0 0
প্রত্যাশিত আউটপুট হবে
5
2 89
3 7 9
4 6 9
4 78
56 8
প্রতিটি "অনুপস্থিত" সংখ্যার জায়গায় ফাঁকা স্থানগুলি নোট করুন, এগুলি প্রয়োজনীয়; আমি এমন জায়গাগুলি নিয়ে মাথা ঘামাচ্ছি না যার পরে তাদের সংখ্যা নেই (যেমন উপরে 9s অনুপস্থিত) আপনি ধরে নিতে পারেন যে আপনি যা মুদ্রণ করছেন তা মনো-স্পেস ফন্ট ব্যবহার করবে। অর্ডারটিও নোট করুন, যার মাধ্যমে প্রথমে আরও ছোট ছোট অঙ্কের সমাধানগুলি তালিকাভুক্ত করা হয় এবং তারপরে পরবর্তীতম ক্ষুদ্রতম সংখ্যার সাথে সমাধানগুলি ইত্যাদি
উপরের উপর ভিত্তি করে অন্য একটি উদাহরণ
19 3 57 9
প্রত্যাশিত আউটপুট হবে
2
2 89
4 6 9
নোট করুন যে প্রতিটি ফলাফলের মধ্যে একটি 9 থাকে এবং কোনও ফলাফলের মধ্যে 5 বা 7 থাকে না।
যদি কোনও সমাধান না হয়, উদাহরণস্বরূপ
20 2 0 0
তারপরে আপনার কেবল 0 টি দিয়ে একটি একক লাইন আউটপুট করা উচিত।
0
আমি ইচ্ছাকৃতভাবে এই প্রশ্নের মজা করার ইনপুট অংশটি তৈরি করেছি। এটি কোড-গল্ফ, সংক্ষিপ্ততম সমাধানটি জয় পেতে পারে।