Комментарии 23
Это первая реализация (читай, первая программа вне академических заданий), поэтому есть пара косяков и артефакты в виде прямых отростков по границам лабиринта.
Вот есть пара сайтов с огромной подборкой алгоритмов лабиринтов:
Здесь разбор особенностей различных алгоритмов.
А здесь непосредственная реализация с примерами (см. записи от Dec 2010 и выше).
Нагуглил их, когда искал алгоритмы для создания "бесконечных" лабиринтов для игры. В итоге остановился на алгоритме Эллера (даже на Хабре есть) – он позволяет генерировать новую строку лабиринта лишь на основании предыдущей строки. А всё, что было раньше, роли не играет и не требует хранения в памяти.
p.s. только сейчас осознал, что в статье изначально как раз и говорится об алгоритме Эллера, хе-хе.
Но не очень тогда понимаю, о каких проблемах с размерностью идёт речь, если этот алгоритм не зависит от размерности вообще...
Судя по выделенным пунктам, автор как-то не так реализовал алгоритм. Например, проблемы с памятью – о чём вообще речь, если для генерации необходимо хранить только две строки? А автор пишет:
создание лабиринта размерностью больше 150х150 без привлечения динамической памяти было проблемным
Ну тут либо любой алгоритм будет вызывать проблемы с памятью (чисто из-за того, что надо будет весь результат куда-то сохранять), либо что-то не так с реализацией.
Например, в приведённых мной ссылках, алгоритм Эллера наоборот назван одним из наиболее эффективных в плане потребления памяти.
Алгоритм я писал на старом добром Pascal, который запускал через эмулятор DOSBox. Это ограничивало мою оперативную память 64-килобайтным обрубком.
Видать очень старым. 5.5 не судьба была взять хотя бы? Про 7.0 вообще молчу. Про Free Pascal с его текстовой средой, имитирующей семёрку, наверное лучше даже не упоминать. :)
Можно конечно представить себе садиста, который последовательно мучает всех не только DOS компилятором, но и за 35 лет ни разу не удосужился посмотреть на новую версию среды.
Ну а вам спасибо за то, что отважно ринулись защищать другого и выносите вердикты на основании своих предположений.
Кстати, вы плохо знали возможности своего паскаля. Седьмая версия могла свободно делать exe, работающие в защищённом режиме 286-го процессора. Там вы получали в своё распоряжение до 16 мегабайт памяти. И DOSBox, разумеется, должен это поддерживать.
10 PRINT CHR$(205.5+RND(1));: GOTO 10
Неприлично простой алгоритм генерации лабиринтов