মাইনসুইপার একটি জনপ্রিয় গেম, যেখানে ব্যবহারকারীকে সংখ্যাসূচক ইঙ্গিতের সাহায্যে মাইনগুলো খুঁজে বের করতে হয়। এই ইঙ্গিতগুলো জানায়, একটি ঘরের ঠিক পাশে (আনুভূমিক, উল্লম্ব বা কর্ণ বরাবর) কতটি মাইন আছে।
আপনার কাজ হলো একটি সম্পূর্ণ মাইনসুইপার বোর্ডের খালি ঘরগুলোতে মাইনের সংখ্যা যোগ করা। বোর্ডটি একটি আয়তক্ষেত্র, যা এমন ঘর দিয়ে গঠিত যেগুলো হয় খালি (' '), নয়তো মাইন ('*')।
প্রতিটি খালি ঘরের জন্য তার সংলগ্ন মাইনের সংখ্যা গণনা করুন (অনুভূমিক, উলম্ব ও তির্যকভাবে)। খালি ঘরটির আশেপাশে কোনো মাইন না থাকলে সেটি খালি রাখুন। নাহলে সেটিকে সংলগ্ন মাইনের সংখ্যা দিয়ে বদলে দিন।
উদাহরণস্বরূপ, আপনি এমন একটি 5 x 4 বোর্ড পেতে পারেন (স্ক্রিনে দেখানোর জন্য এখানে খালি জায়গাগুলো '·' অক্ষর দিয়ে দেখানো হয়েছে):
·*·*·
··*··
··*··
·····
এবং আপনার কোড এটিকে এভাবে রূপান্তর করবে:
1*3*1
13*31
·2*2·
·111·
x,y অবস্থানগুলোকে প্রায়ই একটি Point হিসেবে প্রকাশ করা হয়, ফলে Point-এর এমন কিছু দরকারি ফাংশন পাওয়া যায় যা এ ক্ষেত্রে সাহায্য করতে পারে। বিকল্প হিসেবে এটিকে একটি 2D অ্যারে হিসেবেও প্রকাশ করা যেতে পারে। যেভাবেই করুন না কেন, কিছু বর্ণনামূলক এক্সটেনশন মেথড ডিফাইন করলে আপনার সমাধান অনেক বেশি পাঠযোগ্য ও মার্জিত হয়ে উঠতে পারে।
Exercism-এ সাইন আপ করুন, Pharo ট্র্যাকের 50টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।
আমরা দেখব নেস্টেড for লুপ, বাউন্ড চেকিং সহজ করতে min/max-এর চতুর ব্যবহার, ফাংশনাল পাইপলাইন আর দ্বিমাত্রিক ম্যাট্রিক্সের ব্যবহার।