المسارات
/
Python
Python
/
التمارين
/
حقل الأزهار
حقل الأزهار

حقل الأزهار

متوسط

مقدمة

Flower Field هي إعادة تخيّل عطوفة للعبة الشهيرة Minesweeper. هدف اللعبة هو العثور على كل الأزهار في الحديقة باستخدام تلميحات رقمية تشير إلى عدد الأزهار المجاورة مباشرة (أفقيًا، وعموديًا، وقطريًا) لمربع. صدرت لعبة "Flower Field" ضمن إصدارات إقليمية من Microsoft Windows في إيطاليا وألمانيا وكوريا الجنوبية واليابان وتايوان.

التعليمات

مهمتك هي إضافة أعداد الأزهار إلى المربعات الفارغة في حديقة "حقل الأزهار" المكتملة. الحديقة نفسها لوحة مستطيلة تتكوّن من مربعات، إما فارغة (' ') وإما زهرة ('*').

لكل مربع فارغ، احسب عدد الأزهار المجاورة له (أفقيًا، رأسيًا، وقطريًا). إذا لم يكن للمربع الفارغ أي أزهار مجاورة، فاتركه فارغًا. وإلا فاستبدله بعدد الأزهار المجاورة.

على سبيل المثال، قد تستلم لوحة بأبعاد 5 x 4 مثل هذه (المسافات الفارغة ممثَّلة هنا بالمحرف '·' لعرضها على الشاشة):

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

والتي ينبغي أن يحوّلها الكود إلى هذا:

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

رسائل الاستثناء

أحيانًا تحتاج إلى إثارة استثناء. وعندما تفعل ذلك، ينبغي أن تُضمّن دائمًا رسالة خطأ ذات معنى تشير إلى مصدر الخطأ. فهذا يجعل الكود أكثر قابلية للقراءة، ويساعد كثيرًا في تصحيح الأخطاء. وإذا كنت تعرف أن مصدر الخطأ سيكون من نوع معيّن، يمكنك اختيار إثارة أحد أنواع الأخطاء المضمّنة، لكن يجب أن تُضمّن معه رسالة ذات معنى.

يتطلب هذا التمرين تحديدًا أن تستخدم عبارة raise لـ"رمي" ValueError عندما تتلقى الدالة board() مدخلات غير صالحة. ولن تنجح الاختبارات إلا إذا استخدمت raise مع الاستثناء وأرفقت معه رسالة.

لإثارة ValueError مع رسالة، اكتب الرسالة كوسيط لنوع exception:

# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Python Exercism

مستعد لبدء حقل الأزهار؟

سجّل في Exercism لتتعلّم وتتقن Python عبر 17 مفهومًا146 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.

تعمّق في حقل الأزهار!

نستكشف حلقات `for` المتداخلة، والاستخدام الذكي لـ `min`/`max` لتبسيط التحقق من الحدود، وخطوط الأنابيب الوظيفية، واستخدام المصفوفات ثنائية الأبعاد.