Вложенные структуры · 16 из 19
Песочные часы
К дню открытых дверей Маргарита Львовна заказала кружку информатики заставку на экран в коридоре: песок сыплется сверху, огибает выступы, проходит воронку и собирается внизу горками. Поле — список рядов, в каждой клетке число: 0 — пусто, 1 — песчинка, 2 — камень. Каждый кадр заставки — один шаг песка.
Что сделать
Сделайте один шаг песка: каждая песчинка падает на клетку вниз, а если там занято — скатывается вниз-влево или вниз-вправо.
Что приходит
pole— список рядов, первый — верхний; в клетке 0 — пусто, 1 — песчинка, 2 — камень. Менять его нельзя
Что вернуть
Новое поле того же размера — после одного шага.
Допишите функцию shag_peska в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Песчинка стоит на другой: [[0, 1, 0], [0, 1, 0]]. Вниз нельзя, вниз-влево пусто — она скатывается туда, и выходит [[0, 0, 0], [1, 1, 0]].
shag_peska([[0, 1, 0], [0, 1, 0]])
[[0, 0, 0], [1, 1, 0]]
Шаг считается на копии поля. Ряды обходятся снизу вверх, начиная с предпоследнего — нижнему ряду падать некуда; в каждом ряду клетки идут слева направо. Песчинка смотрит на копию — то есть видит и то, что уже сдвинулось в этом шаге:
- под ней пусто — переезжает на клетку вниз;
- иначе, если пусто вниз-влево и это не за левым краем — туда;
- иначе, если пусто вниз-вправо и это не за правым краем — туда;
- иначе остаётся на месте.
Камни не двигаются. Песчинки не пропадают и не появляются. Обход снизу вверх даёт ещё одно: песчинка за шаг сдвигается не больше чем на одну клетку — переехав вниз, она попадает в ряд, который уже обойдён.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.