КОМПЬЮТЕРРА


"Сапер" (HELP) 

Автор: Ольга Леонтьева, 9360.g23@g23.relcom.ru
Дата публикации:18.09.2000

Соавторство: Константин Кноп


Головоломка "сапер" основана на широко известной игре "Minesweeper", имеющейся почти у всех обладателей MS Windows, начиная, кажется, еще с версии 2.0. Цель ее проста: исходя из данных ключевых чисел, восстановить расположение мин в прямоугольнике. Каждое ключевое число показывает, сколько соседних с ним клеток (из восьми) занято минами. Мины расположены по одной в каждой клетке, а в клетке с числом мин не бывает.

В головоломке, в отличие от игры, нельзя "щелкнуть" по клетке и в результате убедиться, что она пуста (или, наоборот, напороться на мину и затем начинать все сначала). Однако в головоломке гарантируется, что имеющейся информации (ключевых чисел) заведомо достаточно, чтобы однозначно отыскать все расположенные на поле мины. Здесь сапер может ошибаться более одного раза! Конечно, если все свои ошибки потом аккуратненько стереть карандашиком...

В некоторых вариациях предпочитают оперировать не с минами, а с алмазами на необитаемом острове. Суть головоломки от этого, разумеется, не меняется.

Иногда заранее оговаривается общее число мин, скрытых на данном поле. Эта информация может оказать существенную помощь в решении, а часто без нее решение перестает быть единственным.

1750.gif (3467 bytes)

Рассмотрим процесс решения на примере небольшого квадрата. Общее количество мин в нашем случае неизвестно. Будем обозначать, как обычно, строки цифрами, а столбцы - буквами. Мины мы станем отмечать значками, а клетки, в которых мина находиться не может - зарисовывать голубым цветом. Процесс решения этой головоломки, как и многих других, складывается из отдельных рассуждений - мелких шагов. Все понимают, что если количество пустых клеток вокруг числа равно ему самому, то можно сразу заполнить все эти клетки минами. Но в профессионально сделанных "саперах" это редко встречается, как взятие фигуры на первом ходу в шахматной двухходовке. Поэтому первые шаги, как правило, должны быть более тонкими. Будьте внимательны!

Рассмотрим число 2 на клетке h3. Оно дает информацию, что в четырех клетках gh2 и gh4 расположены ровно две мины. Число 3 на g2 дает информацию, что в двух клетках f3 и f4 ровно одна мина (так как в остальных клетках, окружающих его - две мины). Отсюда можно сделать вывод, что остальные клетки, окружающие единицы на e3 и е4 - пусты. Закрашиваем их голубым цветом.

1751.gif (3623 bytes)

После этого две мины вокруг клетки d4 и три мины вокруг клетки е5 восстанавливаются однозначно.

1752.gif (3804 bytes)

Остальные клетки вокруг f5 можно отметить, как пустые, что позволяет поставить однозначно две мины рядом с h6 - на h5 и h7.

1753.gif (3934 bytes)

Каждый новый шаг тут же дает дополнительные возможности для осуществления новых шагов. Отмечаем пустые клетки вокруг g7, добавляем мину на е7 (чтобы вокруг d6 было ровно три мины). Отмечаем, что клетка f3 пуста, и как следствие - все оставшиеся клетки вокруг f2 заполнены минами.

1754.gif (4164 bytes)

Отмечаем мину на d1 и на b6, красим голубым h2, затем ставим мину на h4.

1755.gif (4242 bytes)

Когда кончились элементарные соображения, для продолжения решения необходимо снова использовать более тонкие рассуждения. Рядом с b7 ровно на одну мину больше, чем рядом с а7, эта мина может быть только на с8. Остальные клетки, соседние с с7, пусты, как и е8.

1756.gif (4325 bytes)

Цифра 4 на с2 означает, что в клетках b1, b3, и с1 имеется пара мин, которые вместе с миной на с3 полностью "обеспечивают" тройку на b2. Поэтому клетки а2 и а3 пусты. То есть мина для а1 находится в b1.

1757.gif (4352 bytes)

В клетках b3 и b4 ровно одна мина (за счет тройки в с4), поэтому мина есть в а5 (за счет двойки в а4).

1758.gif (4362 bytes)

Осталось совсем немного - обозначить пустые клетки вокруг b5, мины в а8 и b3, пустую клетку с1. И обязательно убедиться, что в решении нет ошибок.

1759.gif (4447 bytes)

Вот и все! Ваша Ольга Леонтьева.