Как решать головоломку "Сапёр"
Разбор на примере головоломки
https://en.grandgames.net/mines/id176125 1. Отметим крестиками все клетки, в которых не может быть мин. Если для какой-то клетки количество мин в соседних клетках совпадает с числом, указанным в клетке, то все незаполненные соседи мин не содержат. Задачу облегчает то, что такие клетки подсвечиваются зеленым. На настоящем этапе нас интересуют все клетки, содержащие нули. На скрине эти клетки обведены в зеленую рамку.
2. Заполним минами клетки, которые обязательно их содержат. Найдем клетки, для которых количество пустых соседей совпадает с числом, указанным в клетке. Такие клетки обведены в красную рамку.
3. Снова проставим крестики. На скрине интересующие нас клетки отмечены зеленым.
4. И опять проставим мины. Клетки, соседей которых необходимо заполнить, отмечены красным.
5. На скрине синим цветом отмечены две соседние клетки, содержащие 1 и 2. У них есть два общих незаполненных соседа (отмечены желтым), у клетки с двойкой есть еще один пустой сосед (отмечен красным), у клетки с единицей - два таких соседа (отмечены зеленым). Очевидно, что на две желтых клетки может приходиться не более одной мины, так как у них есть общий сосед, содержащий единицу. У клетки с двойкой три пустых соседа - две желтых клетки и одна красная, то есть для того, чтобы у клетки с двойкой были две соседние мины, одна из них должна находиться в красной клетке. С другой стороны, из тех же соображений две желтых клетки не только могут, но и должны содержать одну мину на двоих. Отсюда следует, что соседи единицы, отмеченные зеленым цветом, обязаны быть пустыми. Таким образом, в красную клетку ставим мину, в зеленые - крестики.
6. Заполняем крестиками и минами однозначно определенные клетки. Алгоритм такой же, как в шагах 1-4, на скрине отмечены клетки, на соседей которых нужно обратить внимание. Если клетка обведена зеленым, на определенном этапе во всех ее пустых соседях надо проставить крестики, если красным - то мины.
7. На следующем этапе у нас четыре блока, аналогичных рассмотренному в пункте 5. Клетки, которые будут рассматриваться, обведены синим.
1) Две соседние клетки, содержащие 2 и 4. У них четыре общих пустых соседа, у четверки два дополнительных соседа, у двойки - один. Очевидно, четыре общих соседа, отмеченных желтым, должны содержать две мины на четырех. Соседи четверки, отмеченные красным, должны содержать мины, а сосед двойки, отмеченный зеленым, - крестик.
2) Две соседние клетки, содержащие 2 и 3. У них есть одна общая мина и два общих пустых соседа. Очевидно, что единственный дополнительный сосед тройки должен содержать мину (отмечен красным).
3) Две клетки, содержащие 2 и 3, разделенные двумя общими соседями. У тройки уже есть две соседние мины, у двойки - одна, при этом у двойки больше нет пустых соседей. Таким образом, общие соседи этих клеток, отмеченные желтым, должны содержать одну мину на двоих. Отсюда следует, что дополнительный пустой сосед тройки должен содержать крестик (отмечен зеленым).
4) Две клетки, содержащие 1 и 3, разделенные двумя общими соседями.У единицы нет соседних мин и дополнительных пустых соседей, то есть желтые клетки содержат одну и только одну мину. У тройки есть одна соседняя мина и один дополнительный пустой сосед (отмечен красным), который, очевидно, тоже должен содержать мину. Голубым цветом отмечена соседняя клетка, содержащая единицу. Желтые клетки, в которых должна быть одна мина, обе являются ее соседями, то есть дополнительный пустой сосед (отмечен зеленым) должен содержать крестик.
8. Заполняем крестиками и минами однозначно определенные клетки (аналогично пункту 6).
9. Рассмотрим еще три блока (обведены синими).
1) Две соседние клетки, содержащие 3 и 4. У четверки есть одна соседняя мина, то есть общие соседи тройки и четверки должны содержать три мины, а дополнительный пустой сосед тройки (отмечен зеленым) - крестик.
2) Две соседние клетки, содержащие 2 и 3 с двумя общими соседями. У тройки есть две соседние мины и нет дополнительных пустых соседей, то есть желтые клетки содержат одну и только одну мину. У двойки есть одна соседняя мина, то есть ее дополнительные пустые соседи (отмечены зеленым) содержат крестики.
3) Две соседние клетки, содержащие 2 и 3 с тремя общими соседями. И у двойки, и у тройки нет соседних мин, так что единственный дополнительный пустой сосед тройки (отмечен красным) должен содержать мину.
10. Опять заполняем крестиками и минами однозначно определенные клетки (аналогично пункту 6).
11. Рассмотрим две соседние клетки, содержащие 4 и 2 (обведены синим). У них два общих пустых соседа. У четверки три соседних мины и нет дополнительных пустых соседей, у двойки - одна соседняя мина. Отсюда следует, что дополнительный пустой сосед двойки (отмечен зеленым) обязан содержать крестик. После простановки этого крестика однозначно определены все мины, соседние с тройкой (обведена красным).
12. Головоломка решена!