আপনি আপনার বাড়ির কাছে বনের মধ্যে একটি গাছের ঘর বানানোর পরিকল্পনা করছেন, যাতে সূর্যোদয় ও সূর্যাস্ত দেখতে পারেন।
স্থানীয় একটি জরিপ কোম্পানি থেকে আপনি এমন তথ্য পেয়েছেন, যেখানে মানচিত্রের প্রতিটি আয়তাকার অংশে থাকা প্রতিটি গাছের উচ্চতা দেখানো হয়েছে। গাছের ঘরের জন্য ভালো গাছ খুঁজে পেতে আপনাকে মানচিত্রের প্রতিটি গ্রিড বিশ্লেষণ করতে হবে।
একটি ভালো গাছ হতে হলে দুটোই লাগবে:
আপনার কাজ হলো সম্ভাব্য সেই গাছগুলো খুঁজে বের করা যেখানে আপনি আপনার গাছের ঘর বানাতে পারবেন।
ডেটা কোম্পানি এমন গ্রিড হিসেবে ডেটা দেয় যেগুলো গাছের উচ্চতা দেখায়। গ্রিডের সারিগুলো পূর্ব-পশ্চিম দিক বোঝায়, আর কলামগুলো উত্তর-দক্ষিণ দিক বোঝায়।
একটি গ্রহণযোগ্য গাছ তার সারিতে সবচেয়ে বড় হবে, আবার তার কলামে সবচেয়ে ছোট হবে।
কোনো গ্রিডে একেবারেই ভালো গাছ নাও থাকতে পারে। অথবা একটিও থাকতে পারে, এমনকি কয়েকটিও।
এখানে একটি গ্রিড আছে যেখানে ঠিক একটি প্রার্থী গাছ আছে।
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
তাই [2, 1] বিন্দুটি (সারি: ২, কলাম: ১) গাছের ঘর বানানোর জন্য দারুণ একটি জায়গা।
কখনও কখনও একটি এক্সেপশন রেইজ করা প্রয়োজন হয়। এটা করার সময়, এররটির উৎস কী তা বোঝাতে আপনার সর্বদা একটি অর্থবহ এরর মেসেজ যুক্ত করা উচিত। এতে আপনার কোড আরও পড়ার উপযোগী হয় এবং ডিবাগিংয়ে অনেক সহায়তা করে। যেসব ক্ষেত্রে আপনি জানেন যে এররটির উৎস একটি নির্দিষ্ট টাইপ হবে, সেখানে আপনি বিল্ট-ইন এরর টাইপগুলোর একটি রেইজ করা বেছে নিতে পারেন, তবে তবুও একটি অর্থবহ মেসেজ যুক্ত করা উচিত।
এই নির্দিষ্ট অনুশীলনীতে matrix অনিয়মিত হলে ValueError "থ্রো" করার জন্য আপনাকে raise স্টেটমেন্ট ব্যবহার করতে হবে। আপনি যদি exception-টি raise করেন এবং তার সঙ্গে একটি মেসেজও যুক্ত করেন, তবেই টেস্টগুলো পাস করবে।
একটি মেসেজসহ ValueError রেইজ করতে, মেসেজটি exception টাইপের আর্গুমেন্ট হিসেবে লিখুন:
# if the matrix is irregular
raise ValueError("irregular matrix")
Exercism-এ সাইন আপ করুন, Python ট্র্যাকের 17টি কনসেপ্ট146টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।