Игра «Морской бой» · Шаг 3 из 5
Обвести потопленный
Корабли не касаются друг друга даже углами. Значит, когда корабль потоплен, все клетки вокруг него заведомо пусты, и стрелять туда — только тратить выстрелы. На бумаге их обводят точками.
Что сделать
Найдите клетки вокруг корабля — по сторонам и углами, в пределах моря, — чтобы отметить их как заведомо пустые.
Что приходит
korabl— список клеток корабляn— сторона моря
Что вернуть
Отсортированный список клеток вокруг корабля, без самого корабля и без клеток за краем моря.
Допишите функцию obvodka в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт obvodka, когда корабль потоплен, и отмечает эти клетки промахами — и на вашем поле, и в голове противника. Решите шаг — и никто не будет стрелять впустую рядом с утонувшим кораблём.
Без этого шага: вокруг потопленного корабля ничего не отмечается — клетки рядом с ним приходится обстреливать впустую.
obvodka([(4, 4)], 10)
[(3, 3), (3, 4), (3, 5), (4, 3), (4, 5), (5, 3), (5, 4), (5, 5)]
Клетка вокруг корабля — любая из восьми соседних (по стороне или углом) хотя бы для одной клетки корабля, если она сама не клетка корабля и лежит на море: 0 <= строка < n и 0 <= столбец < n.
Каждая клетка — один раз; список отсортирован (sorted: по строке, потом по столбцу).
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.