মাইনসুইপার একটি জনপ্রিয় গেম, যেখানে ব্যবহারকারীকে সংখ্যাসূচক ইঙ্গিতের সাহায্যে মাইনগুলো খুঁজে বের করতে হয়। এই ইঙ্গিতগুলো জানায়, একটি ঘরের ঠিক পাশে (আনুভূমিক, উল্লম্ব বা কর্ণ বরাবর) কতটি মাইন আছে।
আপনার কাজ হলো একটি সম্পূর্ণ মাইনসুইপার বোর্ডের খালি ঘরগুলোতে মাইনের সংখ্যা যোগ করা। বোর্ডটি একটি আয়তক্ষেত্র, যা এমন ঘর দিয়ে গঠিত যেগুলো হয় খালি (' '), নয়তো মাইন ('*')।
প্রতিটি খালি ঘরের জন্য তার সংলগ্ন মাইনের সংখ্যা গণনা করুন (অনুভূমিক, উলম্ব ও তির্যকভাবে)। খালি ঘরটির আশেপাশে কোনো মাইন না থাকলে সেটি খালি রাখুন। নাহলে সেটিকে সংলগ্ন মাইনের সংখ্যা দিয়ে বদলে দিন।
উদাহরণস্বরূপ, আপনি এমন একটি 5 x 4 বোর্ড পেতে পারেন (স্ক্রিনে দেখানোর জন্য এখানে খালি জায়গাগুলো '·' অক্ষর দিয়ে দেখানো হয়েছে):
·*·*·
··*··
··*··
·····
এবং আপনার কোড এটিকে এভাবে রূপান্তর করবে:
1*3*1
13*31
·2*2·
·111·
কখনো কখনো এক্সেপশন রেইজ করা প্রয়োজন হয়। এটি করার সময়, এররটির উৎস কী তা বোঝাতে সবসময় একটি অর্থপূর্ণ এরর মেসেজ যোগ করা উচিত। এটি আপনার কোডকে আরও পাঠযোগ্য করে তোলে এবং ডিবাগিংয়ে যথেষ্ট সাহায্য করে। যে ক্ষেত্রে আপনি জানেন এররের উৎসটি একটি নির্দিষ্ট টাইপ হবে, সেখানে আপনি বিল্ট-ইন এরর টাইপগুলির একটি রেইজ করার সিদ্ধান্ত নিতে পারেন, তবে তবুও একটি অর্থপূর্ণ মেসেজ যোগ করা উচিত।
এই নির্দিষ্ট অনুশীলনীতে রেইজ স্টেটমেন্ট ব্যবহার করে board() ফাংশন যখন ত্রুটিপূর্ণ ইনপুট পায়, তখন একটি ValueError "থ্রো" করতে হবে। পরীক্ষাগুলি কেবল তখনই পাস করবে যদি আপনি exceptionটি raise করেন এবং তার সঙ্গে একটি মেসেজও দেন।
একটি মেসেজ-সহ ValueError রেইজ করতে, মেসেজটি exception টাইপের একটি আর্গুমেন্ট হিসেবে লিখুন:
# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
Exercism-এ সাইন আপ করুন, Python ট্র্যাকের 17টি কনসেপ্ট146টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।
আমরা দেখব নেস্টেড for লুপ, বাউন্ড চেকিং সহজ করতে min/max-এর চতুর ব্যবহার, ফাংশনাল পাইপলাইন আর দ্বিমাত্রিক ম্যাট্রিক্সের ব্যবহার।