Вступление
Nine Mens's Morris (также называемый Mills) - настольная игра для двух игроков, в которую играют на следующей доске (изображение взято со связанной страницы Википедии):
У каждого игрока есть 9 человек, окрашенных в черно-белый цвет. Конкретные правила не важны для этой задачи, но проверьте страницу Википедии, если вы заинтересованы.
Соревнование
Задав в качестве входных данных сетку, представляющую определенное состояние платы, выведите общее количество фрез m
с 0<=m<=8
.
Три человека одного цвета образуют мельницу, когда они находятся в прямом ряду соединенных точек. b2
чтобы f2
не мельница , так как люди разного цвета. Кроме того, d2
чтобы d5
не образовывать мельницу , так как три точки должны быть подключены.
Доска на изображении выше содержит две мельницы, например. Один от f2
до f6
и один от e3
до e5
.
вход
Плата представлена в виде двумерной сетки с 24 точками, которые соединены, как показано на рисунке выше. В примере используются буквы from a-g
для столбцов и цифры from 1-7
для строк, но вы можете выбрать любой разумный формат ввода, если он отображает 24 уникальные координаты в одно из следующих состояний:
- пустой
- Взятый черным
- Взято белым
Конкретное представление зависит от вас, вы не ограничены "b" или "w" для цветов.
Кроме того, ваш вклад может не содержать никакой дополнительной информации.
Дополнительные замечания
- Вам не нужно отображать точки по каким-либо значениям. Если вы хотите принять входные данные в виде двумерного массива, это тоже хорошо. Но имейте в виду, что не все точки там используются, и что вы должны учитывать связи между ними.
- Вход может быть пустым, в этом случае вы должны вывести ноль (пустая доска -> без фрез).
- Поскольку у каждого игрока по 9 человек, входные данные никогда не будут содержать более 18 взятых очков.
- Вы можете не указывать emtpy точки на входе и, следовательно, только те входные точки, которые взяты.
- Ввод можно заказать любым способом. Вы не можете полагаться на конкретный заказ.
- Вы можете предположить, что ввод всегда будет действительным. Это означает, что не будет более 9 человек каждого цвета, и что каждая точка будет уникальной.
правила
- Уточните, какой формат ввода вы используете в своем решении. Предоставление примера запуска вашей программы приветствуется.
- Функция или полная программа разрешены.
- Правила по умолчанию для ввода / вывода.
- Применяются стандартные лазейки .
- Это код-гольф , поэтому выигрывает меньшее количество байт. Tiebreaker является более ранним представлением.
Контрольные примеры
Формат ввода здесь представляет собой список кортежей с координатами, как в примере выше, в качестве первого элемента и состоянием точки второго элемента. Точка, выбранная белым цветом, помечена как «w», а точка, обозначенная черным, как «b». Все остальные точки опущены и пусты.
[( "А4", "ш"), ( "b2", "б"), ( "b4", "б"), ( "с4", "б"), ( "d1", "ш") , ( "d2", "ш"), ( "е3", "ш"), ( "е4", "ш"), ( "е5", "ш"), ( "F2", "б") , ("f4", "b"), ("f6", "b"), ("g4", "w")] -> 2 [( "A1", "б"), ( "а4", "б"), ( "а7", "б"), ( "b4", "б"), ( "с4", "б") , ("d3", "w"), ("d2", "w"), ("d1", "w")] -> 3 [] -> 0 [("b4", "b"), ("a4", b "), (" c4 ", w")] -> 0 [("b4", "b"), ("a4", b "), (" c4 ", b")] -> 1 [("a1", "b"), ("a4", "b"), ("a7", "b"), ("b2", "b"), ("b4", "b") , ("b6", "b"), ("c3", "b"), ("c4", "b"), ("c5", "b"), ("e3", "w") , ("e4", "w"), ("e5", "w"), ("f2", "w"), ("f4", "w"), ("f6", "w") , ("g1", "w"), ("g4", "w"), ("g7", "w")] -> 8
Удачного кодирования!
d3
и d5
не связаны. Правила говорят: Three men of the same color form a mill when they are in a straight row of connected points.
. Я добавил несколько примеров в этот раздел, чтобы прояснить ситуацию, спасибо за комментарий!