выигрышная ситуация в настольной игре - алгоритм поиска

Я ищу, возможно, эффективный алгоритм для обнаружения "выигрышной" ситуации в игре гомоку (пять в ряд), сыгранной на Доска 19х19. Выигрышная ситуация возникает, когда одному из игроков удается собрать пять и НЕ БОЛЕЕ пяти «камней» подряд (горизонтальных, диагональных или вертикальных).

У меня есть следующие легко доступные данные:

  • предыдущие ходы («камни» " ) обоих игроков, хранящихся в 2d-массиве (также может быть объектом нотации json), с переменными «B» и «W», чтобы отличать игроков друг от друга,
  • «координаты» входящего хода (move.x, move .y),
  • количество ходов, сделанных каждым игроком

Я делаю это в javascript, но любое решение, которое не использует низкоуровневые вещи, такие как выделение памяти или операции с массивами более высокого уровня (python), будет хорошо.

Я нашел похожий вопрос ( Определить выигрыш в нулевой игре и кроссах ), но приведенные там решения относятся только к маленьким доскам (5x5 и т. д.).

7
задан Community 23 May 2017 в 12:09
поделиться