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

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

Лабиринт

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

    2. Генератор лабиринта и вывод лабиринта с помощью # и пробелов

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

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

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

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


CategoryClass CategoryVmsh

LecturesVMSH/2011-11-30 (последним исправлял пользователь FrBrGeorge 2011-12-03 16:39:01)