Мы уже создали поля Минного тральщика , но кто-то действительно должен смести эти сгенерированные мины, прежде чем взорвется ПКГ!
Ваша задача - написать Солитер, который будет совместим со слегка измененной версией принятого решения «Рабочий сапер» (действия разделены пробелами, чтобы можно было увеличить поля).
Входные данные: поле Сапер, поля разделены пробелами. Первая строка обозначает общее количество мин.
x
: Нетронутый!
: Флаг- Цифра: количество мин вокруг этого поля
Пример:
10
0 0 1 x x x x x
0 0 2 x x x x x
0 0 2 ! x x x x
0 0 1 2 x x x x
0 0 0 1 x x x x
1 1 0 2 x x x x
x 1 0 2 x x x x
1 1 0 1 x x x x
Вывод: Ваш следующий шаг в формате action row column
(начиная с нуля)
Допустимые действия:
0
: Открой это1
: Поставить флаг
Пример:
0 1 2
Правила:
- Вы пишете полную программу, которая принимает одно поле в качестве входных данных (либо STDIN, либо аргументы командной строки) и выводит одно действие (STDOUT). Следовательно, вы не можете сохранять состояния, кроме
!
. - Ваш выбор должен следовать лучшим шансам на выживание. (то есть, если есть 100% безопасный ход, возьмите его)
- Это код-гольф ; выигрывает самое короткое решение (в байтах UTF-8)
тесты:
Эти тесты служат для тестирования наиболее распространенных явных ситуаций; Ваша программа должна работать для каждого тестового поля.
В:
4
x x x x
1 2 x x
0 1 2 x
0 0 1 x
Out (любой из них):
1 1 2
0 0 2
0 1 3
В:
2
x x x
1 ! x
1 1 x
Out (любой из них):
0 0 0
0 0 1
0 1 2
0 2 2
1 0 2
В:
10
x x x x x x x x
1 3 3 x x x x x
0 1 ! 3 3 4 x x
0 2 3 ! 2 3 x x
0 1 ! 2 2 ! x x
Out (любой из них):
1 1 5
1 0 2
В:
2
x x x
2 3 1
! 1 0
Out (любой из них):
0 0 1
1 0 0
1 0 2
0 0 2
или 0 1 3
. Я не понимаю, как один из них будет считаться безопасным. (Я не должен быть достаточно хорош в тральщике ...)
F
или P
выглядит лучше флага, чем !
:)