Поиск в шахматном порядке может найти каждый прямой корабль длиной от двух клеток на ортогональной сетке. Одноклеточные корабли он не покрывает: сначала проверьте оставшийся флот.
После попадания переходите к преследованию
Мысленно раскрасьте сетку двумя цветами. Любой горизонтальный или вертикальный корабль из двух и более последовательных клеток занимает оба цвета, поэтому поиск одного цвета способен его найти. Это довод о покрытии, а не о минимуме выстрелов. После попадания проверяйте неизвестных соседей по сторонам. Два попадания в линию указывают ось, но могут относиться к разным кораблям, если соприкосновение разрешено.
Пошаговые действия
- Проверьте длины кораблей, правила соприкосновения и наличие одноклеточных.
- Пока нет незавершённого попадания, ищите с промежутками и пропускайте известные промахи.
- После попадания продолжайте вероятную линию в обе стороны по необходимости и дождитесь подтверждения потопления.
Нужно ли исключать все клетки рядом с потопленным кораблём?
Только если версия прямо запрещает соприкосновение. Иначе рядом может находиться другой корабль. Промах также не исключает всю строку: он убирает размещения через эту клетку, а не все размещения строки.