عدّ نقاط Go

عدّ نقاط Go

متوسط

التعليمات

احسب النقاط المحرزة على رقعة غو.

في لعبة غو (المعروفة أيضًا باسم baduk وigo وcờ vây وwéiqí) تُكتسب النقاط بتطويق التقاطعات الفارغة بالكامل بحجارتك. تُعرف التقاطعات المطوَّقة للاعب باسم أرضه.

احسب أرض كل لاعب. يمكنك أن تفترض أن أي حجارة علقت داخل أرض الخصم قد أُزيلت بالفعل من الرقعة.

حدّد الأرض التي تشمل إحداثيًا محدّدًا.

قد تُطوَّق عدة تقاطعات فارغة دفعة واحدة، وفي التطويق تُحتسب الجوارات الأفقية والرأسية فقط. في المخطط التالي، الحجارة المهمة مُعلَّمة بـ "O" والحجارة غير المهمة مُعلَّمة بـ "I" (أي مُتجاهَلة). تمثّل المسافات الفارغة تقاطعات فارغة.

+----+
|IOOI|
|O  O|
|O OI|
|IOI |
+----+

ولمزيد من الدقة، يكون التقاطع الفارغ جزءًا من أرض اللاعب إذا كانت جميع جواراته إما حجارة لذلك اللاعب وإما تقاطعات فارغة تشكّل جزءًا من أرض ذلك اللاعب.

لمزيد من المعلومات، انظر Wikipedia أو Sensei's Library.

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

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

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

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

# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Python Exercism

مستعد لبدء عدّ نقاط Go؟

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