খেলাাটি
সম্প্রতি, আমার বেশিরভাগ সময় আমার ফোনে একটি আসক্তি গেমটি গ্রহণ করেছে, যার নাম লজিক ডটস, যা আমাকে এই চ্যালেঞ্জটি লিখতে অনুপ্রাণিত করেছিল। আমি আপনাকে গেমের ডিসপ্লে দেখালে নিয়মগুলি ব্যাখ্যা করা আরও সহজ, সুতরাং এখানে একটি অমীমাংসিত, এবং সমাধান হওয়া ধাঁধাটির একটি স্ক্রিনশট রয়েছে:
এখন এখানে তিনটি প্রধান বিষয় লক্ষ্য করা যায়।
- গেম বোর্ড (কেন্দ্রের স্কোয়ারগুলির 4x4 গ্রিড)
- প্রয়োজনীয় আকারগুলি (শীর্ষ থেকে দ্বিতীয় বারের সাথে সংযুক্ত বিন্দুগুলি, স্কোর এবং মেনু এর নীচে, ইত্যাদি), যা সমস্ত লাইন, বা
a
1 টি আয়তক্ষেত্র দ্বারা - সারি এবং কলামগুলির উপরে সংখ্যাগুলি, যা সমাধানের জন্য কলামে কতগুলি বিন্দু হওয়া দরকার তা বোঝায়
গেমের উদ্দেশ্য হ'ল গ্রিডের মধ্যে প্রয়োজনীয় আকারগুলি ফিট করা। আপনি আকারগুলি ঘোরান, তবে সেগুলি তির্যকভাবে যেতে পারে না।
সমাধানে লক্ষ্য করুন যে সমস্ত আকারগুলি একবারে তৈরি করা হয়েছে (কারণ সেগুলি কেবল একবার প্রয়োজনীয় আকারে থাকে) এবং এক্ষেত্রে সেগুলি সমস্ত অনুভূমিক তবে সেগুলি উল্লম্বও হতে পারে। স্কোয়ারগুলিতে ভরা গোলাপী ব্যবহার করা হয়নি এমন স্কোয়ারকে বোঝায়।
এখানে একটি বৃহত্তর এবং কিছুটা জটিল জটিল গ্রিড রয়েছে:
লক্ষ করুন যে, অসমাধিত ধাঁধা ইন, ইতিমধ্যে কয়েক ধূসর রঙের স্কোয়ার পূরণ স্কোয়ার হয় স্কোয়ার যে আপনাকে অবরুদ্ধ বোঝান করতে পারে না উপর একটি বিন্দু স্থাপন করুন। লেজযুক্ত বিন্দুগুলি আপনাকে জানায় যে একটি বিন্দু সেই স্থানে রয়েছে এবং এটি লেজের দিকে কমপক্ষে আরও একটি বিন্দুর সাথে সংযুক্ত রয়েছে তবে অন্য কোনও দিকে নয় (বিপরীত দিক সহ)।
স্বরলিপি
এই পোস্টের বাকী অংশগুলির জন্য, আমি নিম্নলিখিত চিহ্নগুলি ব্যবহার করে বোর্ডটি উল্লেখ করব:
- <,>, ^, ভি - বিন্দুর দিকে প্রসারিত একটি লেজযুক্ত একটি পূর্ব-স্থাপনিত বিন্দুটিকে চিহ্নিত করে
- * - একটি বিন্দু বোঝায় যদি অমীমাংসিত গ্রিডে দেওয়া হয় (ইনপুট), এটি একটি স্বতন্ত্র আকার। যদি আউটপুটে থাকে, তবে এটি তার চারপাশের বিন্দুর সাথে সংযুক্ত is
- # - একটি অবরুদ্ধ গ্রিড বর্গক্ষেত্রকে চিহ্নিত করে (যেখানে আপনি কোনও বিন্দু রাখতে পারবেন না)
- -, | (হাইফেন এবং বার) - ডান এবং বাম লেজের সাথে একটি বিন্দু এবং যথাক্রমে উপরে এবং নীচে লেজের সাথে একটি বিন্দুটি চিহ্নিত করুন
- ** (স্থানের অক্ষর) - ** একটি খালি স্থানকে বোঝায়
এই চিহ্নগুলি ব্যবহার করে, পরবর্তী উদাহরণগুলি (অমীমাংসিত) কে নিম্নরূপে উপস্থাপন করা যেতে পারে:
<
#
^ #
এবং সমাধান হিসাবে প্রতিনিধিত্ব করা যেতে পারে:
*< * *
*
*
* *
* *#*
^ # *
নোট করুন যে কোনও দুটি আকার অনুভূমিকভাবে, উল্লম্ব বা ত্রিভুজভাবে স্পর্শ করতে পারে না , সুতরাং নিম্নলিখিত ক্ষেত্রেটি বৈধ নয়:
***
**
**
চ্যালেঞ্জ
আপনার চ্যালেঞ্জটি 4x4 থেকে 9x9 সহ অন্তর্ভুক্ত কোনও লজিক ডট ধাঁধা সমাধান করা। আপনি চারটি লাইন ইনপুট পাবেন, তারপরে গেম বোর্ড। লাইনগুলি নিম্নরূপ হবে:
- প্রথম লাইন, আকার - সন্ধান করার জন্য আকারগুলি প্রতিটি ফর্মটিতে দেওয়া হয়
sizexquantity
(উদাহরণস্বরূপ3x2
, তিন দৈর্ঘ্যের দুটি আকারের জন্য) এবং একটি স্পেস দ্বারা পৃথক করা হয়। উদাহরণ লাইন:3x1 2x1 1x1
- ২ য় লাইন, কলাম - প্রতিটি কলামের জন্য প্রয়োজনীয় বিন্দু গণনার একটি স্থান পৃথকীকরণ তালিকা। উদাহরণ লাইন:
1 1 2 2
- তৃতীয় লাইন, সারি- প্রতিটি সারির জন্য প্রয়োজনীয় বিন্দু গণনার একটি স্থান পৃথকীকরণ তালিকা। উদাহরণ লাইন:
3 0 3 0
- ৪ র্থ লাইন, বোর্ডের আকার - একটি একক পূর্ণসংখ্যা, বোর্ডের আকার,
B
তারপরে বোর্ডটি দেওয়া হয় এবং এটি B
উল্লিখিত স্বরলিপিটি ব্যবহার করে বোর্ডের প্রতিনিধিত্বকারী ইনপুটগুলির লাইন। উদাহরণস্বরূপ, পরবর্তী উদাহরণের ক্ষেত্রে সম্পূর্ণ ইনপুটটি নিম্নরূপ:
4x1 3x1 2x2 1x2
1 4 0 3 0 5
4 1 1 2 3 2
6
<
#
^ #
আপনার প্রোগ্রামটি তখন একই স্বরলিপিতে সমাধান বোর্ডকে আউটপুট দেবে। উপরের ইনপুটটির সাথে মিলে যাওয়া আউটপুট নিম্নরূপ:
** * *
*
*
* *
* *#*
* # *
মনে রাখবেন যে একটি গেম বোর্ডের একাধিক সমাধান থাকতে পারে। এই ক্ষেত্রে, কেবলমাত্র একটি বৈধ সমাধান আউটপুট করুন। এছাড়াও, আপনার প্রোগ্রামটিকে একটি জটিল 10x10 গ্রিডের জন্য একটি যুক্তিসঙ্গত ডেস্কটপ কম্পিউটারে 10 সেকেন্ডের মধ্যে একটি সঠিক সমাধান আউটপুট করতে হবে।
এটি কোড গল্ফ, তাই কমপক্ষে বাইটস জেতা।
পরীক্ষার কেস
ইনপুট ঘ
3x2 1x4
2 2 3 1 2
4 0 3 0 3
5
#
#
*
আউটপুট 1
*** *
***#
#
* * *
ইনপুট 2
3x1 1x6
2 0 4 0 3
3 1 2 1 2
5
*
#
আউটপুট 2
* * *
*
* *
* #
* *
ইনপুট 3
5x1 4x1 2x1 1x2
1 2 3 3 2 2
0 5 0 4 0 4
6
#
-
#
<
আউটপুট 3
#
*****
****
#
* ** *
t no two shapes can touch horizontally, vertically or diagonally
(এটি শুরুতে হওয়া উচিত, প্রায় শেষের কাছে হারিয়ে যায়নি তবে যাইহোক ...)