Повторение предыдущих тем и генераторы тестов

Домашнее задание

Лабиринт

  1. Лабиринт задаётся списком списков (двумерным массивом) M x N, в котором ненулевой элемент обозначает стену, а нулевой — свободное место. Переходить с одного свободного места на другое можно только на одну клетку по горизонтали или вертикали. Написать несколько функций:
    1. Генератор лабиринта и вывод лабиринта с помощью # и пробелов

      • ... «просто» лабиринта
      • ... «красивого» лабиринта:
        ***************
        * #           *
        * ##### ##### *
        *   #   #   # *
        *## # ### ### *
        *   # #       *
        * ### # ######*
        * #   #   #   *
        * ### ### # ##*
        *     # # #   *
        *###### # ### *
        * #     #     *
        * # # ####### *
        *   #         *
        ***************
      • ...проходимого или непроходимого лабиринта (управляется параметром)
    2. Выяснить, можно ли добраться из клетки [0][0] в клетку [N-1][M-1]

    3. ...попутно вычислив длину минимального пути
    4. Вывести любой (не обязательно минимальный) маршрут из [0][0] в [N-1][M-1]

    5. Вывести минимальный маршрут
    6. ...на карте лабиринта

Условные обозначения


CategoryClass CategoryVmsh