Войти Создать аккаунт

Игра «Морской бой» · Шаг 5 из 5

Где вероятнее

Раненых нет — куда стрелять? Наугад — плохо: корабль в четыре палубы не поместится в узкую щель между промахами, а в середину открытого моря — помещается многими способами. Опытные игроки считают: сколько способов поставить ещё не потопленные корабли проходят через каждую клетку. Где способов больше всего, там и вероятнее всего корабль.

Что сделать

Посчитайте для каждой клетки, сколькими способами через неё можно поставить ещё не потопленные корабли.

Что приходит

  • izvestno — что известно о море: словарь «клетка → "мимо", "ранил" или "убил"»

  • ostalis — длины кораблей, которые ещё не потоплены, например [3, 2, 2, 1]

  • n — сторона моря

Что вернуть

Список из n рядов по n чисел: сколько положений оставшихся кораблей проходят через клетку.

Допишите функцию karta в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В игре

Противник зовёт karta, когда добивать некого, и стреляет в одну из клеток с самым большим числом. Пробел на вашей стороне делает то же для вас. Решите шаг — и противник начнёт находить корабли за считаные выстрелы.

Без этого шага: противник выбирает клетку наугад из всех необстрелянных, не думая, где может стоять корабль.

Пример

Пустое море 3 × 3 и один двухпалубный корабль. Положений у него двенадцать: шесть по строкам и шесть по столбцам. Через угловую клетку проходят два из них, через середину стороны — три, через центр — четыре: [[2, 3, 2], [3, 4, 3], [2, 3, 2]].

Тот же пример кодом
Вызов
karta({}, [2], 3)
Вернуть
[[2, 3, 2], [3, 4, 3], [2, 3, 2]]

Готовая игра →

Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.