Морской бой

> ОГОНЬ! ...(плюх) Промах.
>
>

**Морской бой** *(англ. Battleship)* — модовый обычный модуль. Представляет собой изначально пустое поле 5×5 с подсказками в виде цифр и кораблей. Модуль, как видно из названия, основан на игре «Морской бой» — однако для его обезвреживания вам не придется буквально играть в эту игру — вместо этого вам необходимо определить расположение всех кораблей на поле боя, используя подсказки и логику.

Фактически модуль напоминает собой некую разновидность японского кроссворда, нонограмму, которая разгадываются похожим образом, путём определения размещения групп клеток на поле. Расположение кораблей в данном модуле закодировано числами, которые показывают, сколько клеток кораблей находятся в соответствующих строках или столбцах.

Модуль является умеренно-трудным для сапёра и достаточно лёгким для эксперта: для решения требует решить головоломку, которая может вызвать определённые затруднения; эксперту же достаточно сообщить сапёру начальные клетки, от которых следует отталкиваться. Для решения модуль, как правило, требует серийный номер, а также количество батареек, индикаторов и портов.

## Руководство

### **Внимание, кадет.**

Враг расположился в пределах этой координатной сетки 5×5. Мы не знаем, где именно находятся цели, но у нас есть часть разведданных.

Мы полагаем, что этой информации может быть недостаточно для определения позиций сил противника. И вот зачем вы здесь. Вы должны вычислить, какие позиции на поле битвы мы можем безопасно обследовать без угрозы быть замеченными.

Для вычисления безопасных координат вам понадобятся цифры и буквы из **серийного номера**. Их значения всегда должны находиться в пределах **A-E** и **1-5**. Прибавляйте или отнимайте 5, если их значения находятся вне этих пределов (для букв используйте их алфавитные позиции: A = 1, B = 2, и т. д.). Также мы подготовили для вас таблицу в виде координатной сетки, в которой все цифры и буквы со сдвигом в 5 позиций выделены одним и тем же цветом.

### **Внимание, лейтенант.**

Вам необходимо установить позиции всех вражеских судов. Как только вы справитесь с этим, модуль будет обезврежен. В вашем распоряжении следующие инструкции:

* Обследуйте безопасные координаты с помощью кнопки «**RADAR**». Помните, что использование радара на любой небезопасной местности выдаёт наше местонахождение врагу.
* Помечайте свободные от вражеских судов клетки с помощью кнопки «**WATER**». Вы также можете кликнуть по цифре над столбцом или сбоку от ряда, чтобы пометить все неотмеченные клетки в столбце/ряду как свободные.
* Атакуйте врагов при помощи кнопки «**TORPEDO**». Не тратьте снаряды понапрасну!
* Каждый вражеский корабль располагается либо по вертикали, либо по горизонтали.
* Ни один корабль не соприкасается с другим, даже по диагонали.
* Мы знаем, сколько клеток в каждом ряду и столбце содержат часть корабля. Это обозначено цифрами по сторонам сетки.
* Также мы знаем, сколько кораблей какого размера присутствует. Это обозначено символами под сеткой.

Удачи. Родина Вас не забудет.
## Советы по обезвреживанию

Данный модуль представляет собой достаточно непростую головоломку, для решения которой предстоит использовать логику. Сложность модуля может варьироваться: некоторые варианты головоломок решаются сложно, даже с использованием радара на всех безопасно вычисленных клетках, тогда как другие варианты сапёр может решать самостоятельно, без помощи эксперта, без нужды использовать радар. Всё зависит от генерации и расположения кораблей на поле. Именно поэтому чаще всего данный модуль решается сапёром в соло.

Есть несколько полезных советов, которые не стоит забывать при решении модуля, и которые стоит активно применять, чтобы решить головоломку гораздо быстрее и проще:

* Если вы видите цифру «0» над столбцом или сбоку от ряда, сразу кликайте по ней — в данном ряду/столбце нет вражеских кораблей; все 5 клеток пометятся водой.
* Всегда помечайте водой все 4 клетки по диагонали от любых клеток с вражескими кораблями.
* Если вы видите цифру «3» над столбцом или сбоку от ряда, и рядом с ней цифру «2», это значит, что единственно возможное расположение кораблей в данном случае — это 3 клетки с врагом в ряду/столбце через одну клетку (также пометьте оставшиеся клетки водой и все клетки по диагонали от врага). Подробнее см. на рисунке ниже.

Если видите «0» — сразу жмите на него.Всегда отмечайте водой все клетки по диагонали от кораблей.Комбинация цифр «3» и «2», расположенных рядом друг с другом.
Не забывайте также кликать по цифре в тех рядах/столбцах, в которых вы уже нашли все необходимые клетки с вражескими кораблями — все пустые клетки также автоматически отметятся водой. Ну и в целом, будьте внимательны и мыслите логически, рассуждая, где бы могли находиться корабли, а где нет, просчитывая их местоположения. Используйте метод предположения — «допустим, корабль находится здесь, тогда…», чтобы прийти либо к логическому выводу, либо к противоречию.

Рассмотрим ещё примеры:

1. Если у вас имеется четырёхпалубный корабль, и на всём модуле есть только одна цифра «4» — то в таком случае очевидно, что четырёхпалубный корабль находится как раз в том же ряду/столбце. Однако, безопасно пометить вы можете только 3 клетки в середине ряда/столбца (так как вы можете не знать гарантированно, к какой стороне корабль примкнул полностью). Аналогично с трёхпалубным кораблём — если он у вас имеется только один, и на всём модуле имеется только одна цифра «3» — значит, трёхпалубный корабль определённо там. В таком случае вы можете безопасно отметить лишь одну клетку — центральную.
2. Также могут возникнуть другие различные ситуации с цифрой «4», с иными присутствующими кораблями. Одну из них мы рассмотрели выше — с наличием четырёхпалубного корабля. В остальных случаях, если четырёхпалубного корабля нет, то в одном ряду/столбце могут находиться 2 двухпалубных корабля, либо, к примеру, 1 трёхпалубный и 1 однопалубный корабли. Заметьте, что в любом из этих двух случаев крайне 2 клетки гарантированно будут содержать корабли.

## Ссылки

* Оригинал на английском
* Оригинал на русском
* Сокращённое руководство (от LeGeND)
* Интерактивное руководство (от samfundev)