Menu
CoddyTech

Rat in a Maze

Крыса начинает в верхней левой клетке n × n maze, где 1 обозначает свободную клетку, а 0 — стену, и должна добраться до нижней правой клетки. Каждый ход перемещает её на одну клетку вниз (D), влево (L), вправо (R) или вверх (U), на свободную клетку. Путь не проходит через одну клетку дважды и заканчивается у выхода.

Верни все пути в виде строк ходов в алфавитном порядке или пустой массив, если путей нет.

Функция

findPaths(maze: integer-2d-array) → string-array
mazeinteger-2d-array
сетка n × n, где 1 обозначает открытую ячейку, а 0 — стену
Возвращаетstring-array
все пути из верхнего левого угла в нижний правый в виде строки ходов, в алфавитном порядке

Ограничения

  • 2 ≤ n ≤ 5
  • maze[i][j] равно 0 или 1.
  • В каждом тестовом лабиринте не более 2 000 путей. В открытом лабиринте 5 × 5 их 8 512, поэтому он не входит в тесты.

Примеры

Ввод
maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]
Вывод
["RDDRDR", "RDRDDR"]
Пояснение
В начале открыта только ячейка справа, а оттуда — только ячейка снизу, поэтому оба пути начинаются с RD. RDDRDR идет первым в сортировке, потому что его третий ход, D, идет перед R.
challenge icon

Дополнительный вопрос

Если разрешены все четыре хода, сможешь ли ты посчитать пути, не перечисляя их? Насколько большим может стать n, прежде чем число путей станет слишком большим?

Сбросить код
def findPaths(maze):
    # Напишите код здесь

Тест #1

Тест #2

Аргумент

maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]

Ожидаемый вывод

["RDDRDR", "RDRDDR"]