احسب النقاط المحرزة على رقعة غو.
في لعبة غو (المعروفة أيضًا باسم baduk وigo وcờ vây وwéiqí) تُكتسب النقاط بتطويق التقاطعات الفارغة بالكامل بحجارتك. تُعرف التقاطعات المطوَّقة للاعب باسم أرضه.
احسب أرض كل لاعب. يمكنك أن تفترض أن أي حجارة علقت داخل أرض الخصم قد أُزيلت بالفعل من الرقعة.
حدّد الأرض التي تشمل إحداثيًا محدّدًا.
قد تُطوَّق عدة تقاطعات فارغة دفعة واحدة، وفي التطويق تُحتسب الجوارات الأفقية والرأسية فقط. في المخطط التالي، الحجارة المهمة مُعلَّمة بـ "O" والحجارة غير المهمة مُعلَّمة بـ "I" (أي مُتجاهَلة). تمثّل المسافات الفارغة تقاطعات فارغة.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
ولمزيد من الدقة، يكون التقاطع الفارغ جزءًا من أرض اللاعب إذا كانت جميع جواراته إما حجارة لذلك اللاعب وإما تقاطعات فارغة تشكّل جزءًا من أرض ذلك اللاعب.
لمزيد من المعلومات، انظر Wikipedia أو Sensei's Library.
معامل board، الذي يمثّل لوحة اللعب، يكون على هيئة مصفوفة من السلاسل النصية.
[' B ', ' B B ', 'B W B', ' W W ', ' W '];
يمثّل كل حرف في السلسلة النصية خلية. القيم الصحيحة للخلية هي:
مسافة بيضاء تقابل خلية فارغةB خلية يملكها اللاعب الأسودW خلية يملكها اللاعب الأبيضيُتوقع من الدالة getTerritory أن تُرجع كائنًا له خاصيتان:
owner مالك المنطقة (NONE أو BLACK أو WHITE)territory مصفوفة من الإحداثيات تمثّل كل خلية في المنطقة.{
owner: 'BLACK',
territory: [
[0, 0],
[0, 1],
[1, 0],
],
}
يُتوقع من الدالة getTerritories أن تُرجع كائنًا له 3 خصائص:
territoryBlack مصفوفة من الإحداثيات تمثّل المناطق التي يملكها اللاعب BLACK
territoryWhite مصفوفة من الإحداثيات تمثّل المناطق التي يملكها اللاعب WHITE
territoryNone مصفوفة من الإحداثيات تمثّل المناطق التي لا يملكها أيٌّ من اللاعبَين{
territoryBlack: [
[0, 0],
[0, 1],
],
territoryWhite: [
[3, 0],
[3, 1],
],
territoryNone: [],
}
سجّل في Exercism لتتعلّم وتتقن JavaScript عبر 37 مفهومًا159 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.