মাইনসুইপার

মাইনসুইপার

কঠিন

ভূমিকা

মাইনসুইপার একটি জনপ্রিয় গেম, যেখানে ব্যবহারকারীকে সংখ্যাসূচক ইঙ্গিতের সাহায্যে মাইনগুলো খুঁজে বের করতে হয়। এই ইঙ্গিতগুলো জানায়, একটি ঘরের ঠিক পাশে (আনুভূমিক, উল্লম্ব বা কর্ণ বরাবর) কতটি মাইন আছে।

নির্দেশনা

আপনার কাজ হলো একটি সম্পূর্ণ মাইনসুইপার বোর্ডের খালি ঘরগুলোতে মাইনের সংখ্যা যোগ করা। বোর্ডটি একটি আয়তক্ষেত্র, যা এমন ঘর দিয়ে গঠিত যেগুলো হয় খালি (' '), নয়তো মাইন ('*')।

প্রতিটি খালি ঘরের জন্য তার সংলগ্ন মাইনের সংখ্যা গণনা করুন (অনুভূমিক, উলম্ব ও তির্যকভাবে)। খালি ঘরটির আশেপাশে কোনো মাইন না থাকলে সেটি খালি রাখুন। নাহলে সেটিকে সংলগ্ন মাইনের সংখ্যা দিয়ে বদলে দিন।

উদাহরণস্বরূপ, আপনি এমন একটি 5 x 4 বোর্ড পেতে পারেন (স্ক্রিনে দেখানোর জন্য এখানে খালি জায়গাগুলো '·' অক্ষর দিয়ে দেখানো হয়েছে):

·*·*·
··*··
··*··
·····

এবং আপনার কোড এটিকে এভাবে রূপান্তর করবে:

1*3*1
13*31
·2*2·
·111·

ট্র্যাক-নির্দিষ্ট নির্দেশনা

মাইনফিল্ডের ফরম্যাট

মাইনফিল্ডকে একটি স্ট্রিং হিসেবে উপস্থাপন করা হয়, যেখানে প্রতিটি সারির শেষে একটি নিউলাইন ক্যারেক্টার থাকে।

একটি উদাহরণ হতে পারে " \n * \n \n"

সংরক্ষিত মেমরি

ইনপুট স্ট্রিংয়ের বাফারটি লিনিয়ার মেমরির ৬৪-৩১৯ বাইট ব্যবহার করে।

চাইলে ইনপুট স্ট্রিংটি একই জায়গায় পরিবর্তন করা যেতে পারে।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
WebAssembly Exercism

মাইনসুইপার শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, WebAssembly ট্র্যাকের 87টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।

ডিপ ডাইভ: মাইনসুইপার!

আমরা দেখব নেস্টেড for লুপ, বাউন্ড চেকিং সহজ করতে min/max-এর চতুর ব্যবহার, ফাংশনাল পাইপলাইন আর দ্বিমাত্রিক ম্যাট্রিক্সের ব্যবহার।