Решил реализовать алгоритм генерации лабиринтов. Для начала взял алгоритм описанный в этой статье. К сожалению то что получается у моего генератора не соответствует заявленным свойствам алгоритма:
Алгоритм Эллера позволяет создавать лабиринты, имеющие только один путь между двумя точками.
Похоже я не так понял описание алгоритма. Поясню проблему на примере. Вот первые три ячейки левого края первой строки, множества определились как (1 | 2 2) - генератор решил построить стенку только между первыми двумя ячейками, но все три ячейки снизу решил не ограничивать. Т.е. на второй строке к 3-му шагу имеем карту множеств: (1 2 2) и делаем 3-й шаг. Первая стенка - решил не строить, карта: (1 1 2), вторая стена опять решил не строить карта: (1 1 1). Всё - в лабиринте цикл.
Генератор ведь строго по описанному алгоритму шёл?