تخطط لبناء بيت شجرة في الغابة القريبة من منزلك، حتى تتمكن من مشاهدة شروق الشمس وغروبها.
لقد حصلت على بيانات من شركة مسح محلية تُظهر ارتفاع كل شجرة في كل قسم مستطيل من الخريطة. وتحتاج إلى تحليل كل شبكة على الخريطة للعثور على أشجار جيدة لبيت الشجرة خاصتك.
الشجرة الجيدة تحقق الأمرين معًا:
مهمتك هي العثور على الأشجار المحتملة التي يمكنك أن تبني عليها بيت شجرتك.
توفّر شركة البيانات بياناتها على هيئة شبكات تُظهر ارتفاعات الأشجار. تمثّل صفوف الشبكة اتجاه الشرق والغرب، وتمثّل الأعمدة اتجاه الشمال والجنوب.
الشجرة المقبولة هي الأكبر في صفها، مع كونها الأصغر في عمودها.
قد لا تحتوي الشبكة على أي أشجار جيدة على الإطلاق. أو قد تحتوي على شجرة واحدة، أو حتى عدة أشجار.
إليك شبكة تحتوي على شجرة مرشّحة واحدة بالضبط.
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
إذن النقطة عند [2, 1] (الصف: 2، العمود: 1) موقع رائع لبناء بيت شجرة.
أحيانًا يكون من الضروري إثارة استثناء. وعندما تفعل ذلك، ينبغي أن تُضمّن دائمًا رسالة خطأ ذات معنى تُبيّن مصدر الخطأ. فهذا يجعل الكود أكثر وضوحًا ويساعد كثيرًا في تصحيح الأخطاء. وفي الحالات التي تعرف فيها أن مصدر الخطأ سيكون من نوع معيّن، يمكنك أن تختار إثارة أحد أنواع الأخطاء المضمّنة، لكن ينبغي أن تُضمّن رسالة ذات معنى رغم ذلك.
يتطلب هذا التمرين تحديدًا أن تستخدم عبارة raise لـ"رمي" ValueError إذا كانت matrix غير منتظمة. لن تنجح الاختبارات إلا إذا استخدمت raise على exception وأرفقت به رسالة.
ولإثارة ValueError مع رسالة، اكتب الرسالة كوسيط للنوع exception:
# if the matrix is irregular
raise ValueError("irregular matrix")
سجّل في Exercism لتتعلّم وتتقن Python عبر 17 مفهومًا146 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.