পাজলিং.এসই- তে আমাদের বন্ধুদের সময়ে , নিম্নলিখিত ধাঁধাটি পোস্ট করা হয়েছিল: এই ক্রোম্যাটিক ধাঁধাটি কি সর্বদা দ্রবণযোগ্য? এডগার জি দ্বারা। আপনি এটি এখানে খেলতে পারেন ।
ধাঁধা ব্যাখ্যা
m x n
তিনটি ভিন্ন রঙের টাইলস সহ একটি গ্রিড দেওয়া , আপনি যদি দুটি রঙের আলাদা হয় তবে দুটি সংলগ্ন টাইল বেছে নিতে পারেন । এই দুটি টাইলগুলি তৃতীয় রঙে রূপান্তরিত হয়, অর্থাত্, একটি রঙ যা এই দুটি টাইল দ্বারা প্রতিনিধিত্ব করে না। ধাঁধাটি সমাধান করা হয় যদি সমস্ত টাইলের রঙ একই থাকে । দৃশ্যত, এক করতে প্রমাণ যে, এই ধাঁধা সবসময় সমাধেয়, যদি তন্ন তন্ন m
না n
3 দ্বারা বিভাজ্য হয়।
অবশ্যই, এটি একটি সমাধান অ্যালগরিদমের জন্য প্রার্থনা করে। আপনি একটি ফাংশন বা প্রোগ্রাম লিখবেন যা এই ধাঁধাটি সমাধান করে। নোট করুন যে 'পার্শ্ব প্রতিক্রিয়া' (যেমন, stdout
কিছু বিশ্রী ডেটা টাইপের রিটার্ন মানের চেয়ে আউটপুট চালু রয়েছে) সহ ফাংশনগুলি স্পষ্টভাবে অনুমোদিত।
ইনপুট আউটপুট
ইনপুট হল একটি হতে হবে m x n
পূর্ণসংখ্যার গঠিত ম্যাট্রিক্স 1
, 2
এবং 3
(অথবা 0
, 1
, 2
সুবিধাজনক যদি)। আপনি এই ইনপুটটি কোনও বুদ্ধিমান বিন্যাসে নিতে পারেন। উভয় m
এবং n
হয় >1
এবং 3. দ্বারা বিভাজ্য আপনি ধাঁধা অনুমান হতে পারে সমাধান হয় না
তারপরে আপনি ধাঁধাটি সমাধান করবেন। এটি 'রূপান্তরিত' হওয়ার জন্য দুটি সংলগ্ন টাইলগুলির একটি পুনরাবৃত্ত নির্বাচনকে জড়িত করবে (উপরে দেখুন)। আপনার সমাধান অ্যালগরিদম গৃহীত প্রতিটি পদক্ষেপের জন্য আপনি এই টাইলগুলির দুটি স্থানাঙ্ক আউটপুট দেবেন। এটি কোনও বুদ্ধিমান আউটপুট বিন্যাসেও হতে পারে। আপনার স্থানাঙ্কগুলির 0-ভিত্তিক এবং 1-ভিত্তিক সূচকের মধ্যে এবং সারি বা কলামগুলি প্রথমে সূচিযুক্ত কিনা তা বেছে নিতে আপনি নির্দ্বিধায়। তবে আপনার উত্তরে এটি উল্লেখ করুন।
আপনার অ্যালগরিদমটি আসল 8x8 ক্ষেত্রে উপযুক্ত সময়ের মধ্যে চলতে হবে। এটি সম্পূর্ণরূপে জোর করে জোর করে স্পষ্টভাবে অনুমোদিত নয়, অর্থাৎ আপনার অ্যালগরিদম সমাধানের জন্য প্রয়োজনীয় পদক্ষেপের সংখ্যার O(k^[m*(n-1)+(m-1)*n])
সাথে চলতে k
হবে। তবে সমাধান না অনুকূল হওয়া প্রয়োজন। লিঙ্কযুক্ত প্রশ্নে প্রদত্ত প্রমাণ আপনাকে কীভাবে এটি করা যায় সে সম্পর্কে ধারণা দিতে পারে (উদাহরণস্বরূপ, কেবলমাত্র সমস্ত উল্লম্ব কেবল উল্লম্ব সংলগ্ন টাইলস ব্যবহার করে এবং পরে সমস্ত সারি করুন)
পরীক্ষার মামলা
এই পরীক্ষার ক্ষেত্রে, স্থানাঙ্কগুলি 1-ভিত্তিক হয় এবং সারিগুলি প্রথমে সূচিযুক্ত হয় (যেমন ম্যাটল্যাব / অক্টাভা এবং সম্ভবত আরও অনেকগুলি)।
Input:
[1 2]
Output: (result: all 3's)
[1 1],[1,2]
Input:
[ 1 2
3 1 ]
Output: (result: all 1's)
[1 1],[2 1] (turn left column into 2's)
[2 1],[2 2] (turn right column into 3's)
[1 1],[1 2] (turn top row into 1's)
[2 1],[2 2] (turn bottom row into 1's)
Input:
[1 2 3 2
3 2 1 1]
Output: (result: all 3's)
[1 1],[1 2]
[1 3],[1 4]
[1 2],[1 3]
[1 1],[1 2]
[1 2],[1 3]
[1 1],[1 2]
[1 3],[1 4]
[2 1],[2 2]
[1 1],[2 1]
[1 2],[2 2]
[1 3],[2 3]
[1 4],[2 4]
যদি ইচ্ছা হয় তবে আমি বৃহত্তর পরীক্ষার কেসগুলির একটি পেস্টবিন পোস্ট করতে পারি তবে আমি মনে করি এটি যথেষ্ট হবে।