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