Треки
/
JavaScript
JavaScript
/
Вправи
/
Підрахунок у ґо
Підрахунок у ґо

Підрахунок у ґо

Середня

Вказівки

Порахуйте набрані очки на дошці для гри го.

У грі го (також відомій як baduk, igo, cờ vây та wéiqí) очки отримують, повністю оточуючи порожні перетини своїми каменями. Оточені перетини гравця називають його територією.

Обчисліть територію кожного гравця. Можна припустити, що будь-які камені, які опинилися в території супротивника, вже знято з дошки.

Визначте територію, яка містить указану координату.

Кілька порожніх перетинів можуть бути оточені одночасно, і для оточення враховуються лише горизонтальні та вертикальні сусіди. На наступній діаграмі камені, які мають значення, позначено «O», а камені, які не мають, позначено «I» (ігноровані). Порожні пробіли позначають порожні перетини.

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

Точніше кажучи, порожній перетин є частиною території гравця, якщо всі його сусіди - це або камені цього гравця, або порожні перетини, які належать до території цього гравця.

Докладніше можна дізнатися у Вікіпедії або в Sensei's Library.

Формат вхідних даних

Параметр board, який представляє ігрове поле, має формат масиву рядків тексту (англ. string).

['  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 має повертати обʼєкт із трьома властивостями:

  • territoryBlack Масив координат, що представляє території, які належать гравцю BLACK
  • territoryWhite Масив координат, що представляє території, які належать гравцю WHITE
  • territoryNone Масив координат, що представляє території, які не належать жодному з двох гравців
{
    territoryBlack: [
        [0, 0],
        [0, 1],
    ],
    territoryWhite: [
        [3, 0],
        [3, 1],
    ],
    territoryNone: [],
}
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
JavaScript Exercism

Час розпочати Підрахунок у ґо?

Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.