Процедурный генератор жилых районов на Python
Есть игровое поле. Координаты там располагаются так, как показано на изображении №1. Поле может быть любого размера, его можно менять. Поле необходимо представить в виде списка с кортежами [(0,0), (1,0), ...]. Порядок координат не важен, главное, чтобы они были корректны.
Задача.
1) Провести прямую от начала до конца поля. Случайным образом выбрать будет она вертикальной или горизонтальной.
2) Дальше, начиная от этой прямой, мы должны присоединяться прямоугольники разных размеров (нужно сделать так, чтобы можно было ограничить их максимальный и минимальный размер). Количество прямоугольников тоже должно быть не больше указанного. В конечном счёте мы должны получить результат приблизительно такой, как на изображении №2.
3) Прямоугольники должны располагаться рядом друг с другом. Плохим считается результат, как на изображении №3, такого быть не должно.
Прямоугольники - это дороги. Поэтому, они должны располагаться не рядом друг с другом, а, грубо говоря, наслаиваться одной стороной друг на друга. Так же, необходимо, по возможности, избежать "протыкание" одного прямоугольника другим, как это показано на изображении №4.
Ничего рисовать не нужно, мне нужно будет только возвращать список с координатами, куда "якобы" размещены дороги.
Но, так как не будет возможности сразу проверить работоспособность кода, необходимо сделать небольшую визуализацию результата. Любым методом. Хоть в терминале с помощью точек и решёток.
Скрипты и боты