Кодинг-марафон. Задача № 8.

Эта задача основана на игре «Сапёр».

Создайте функцию, которая принимает сетку из «#» и «-«. В этой сетке каждая решетка (#) представляет мину, а каждое тире (-) — место без мин.

Верните список, в котором каждое тире заменено цифрой, обозначающей количество мин, непосредственно примыкающих к тире (по горизонтали, вертикали и диагоналям).

Примеры

num_grid ([
  [«-», «-», «-», «-», «-»],
  [«-», «-», «-», «-», «-»],
  [«-», «-», «#», «-», «-»],
  [«-», «-», «-», «-», «-»],
  [«-», «-», «-», «-», «-»]
]) ➞ [
  [«0», «0», «0», «0», «0»],
  [«0», «1», «1», «1», «0»],
  [«0», «1», «#», «1», «0»],
  [«0», «1», «1», «1», «0»],
  [«0», «0», «0», «0», «0»],
]

num_grid ([
  [«-», «-», «-», «-», «#»],
  [«-», «-», «-», «-», «-»],
  [«-», «-», «#», «-», «-»],
  [«-», «-», «-», «-», «-»],
  ["#", "-", "-", "-", "-"]
]) ➞ [
  [«0», «0», «0», «1», «#»],
  [«0», «1», «1», «2», «1»],
  [«0», «1», «#», «1», «0»],
  [«1», «2», «1», «1», «0»],
  [«#», «1», «0», «0», «0»]
]

num_grid ([
  [«-», «-», «-», «#», «#»],
  [«-», «#», «-», «-», «-»],
  [«-», «-», «#», «-», «-»],
  [«-», «#», «#», «-», «-»],
  [«-», «-», «-», «-», «-»]
]) ➞ [
  [«1», «1», «2», «#», «#»],
  [«1», «#», «3», «3», «2»],
  [«2», «4», «#», «2», «0»],
  [«1», «#», «#», «2», «0»],
  [«1», «2», «2», «1», «0»],
]

Решение

def num_grid(lst):
    for i in range(len(lst)):
        for j in range(len(lst[i])):
            if lst[i][j] != "#":
                lst[i][j] = "0"
    for i in range(len(lst)):
        for j in range(len(lst[i])):
            if lst[i][j] == "#":
                for x in range(-1, 2):
                    for y in range(-1, 2):
                        if i + x >= 0 and j + y >= 0 and i + x < len(lst) and j + y < len(lst[i]):
                            if lst[i + x][j + y] != "#":
                                lst[i + x][j + y] = str(int(lst[i + x][j + y]) + 1)
    return lst
Марина

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago