Модель трафика Бихам-Миддлтон-Левин - это самоорганизующийся сотовый автомат, который моделирует упрощенный трафик.
Он состоит из нескольких автомобилей, представленных точками на решетке со случайной стартовой позицией, где каждый автомобиль может быть одного из двух типов: те, которые движутся только вниз (показано синим цветом в этой статье), и те, которые движутся только к правильно (показано красным цветом в этой статье). Два типа автомобилей по очереди двигаются. В течение каждого поворота все автомобили соответствующего типа продвигаются на один шаг, если они не заблокированы другим автомобилем.
Ваша задача визуализировать эту модель как анимацию. Вот несколько хороших демонстраций.
вход
Число с плавающей точкой от 0 до 1, представляющее плотность, и два целых числа, представляющие отображаемую высоту и ширину сетки. Предположим, что входные данные действительны, и параметры для функции или чтения из пользовательского ввода в порядке.
Пример: 0.38 144 89
(соответствует изображению выше)
Выход
Сетка размером не менее 80x80, отображающая анимацию работы этой модели. В начале, автомобили случайным образом размещаются в сетке, пока сетка не достигнет входной плотности, наполовину красный и наполовину синий (то есть плотность умножается на общее количество квадратов сетки, округленных, как вам нравится). Плотность должна быть этим значением, что означает, что вы не можете заполнить каждую ячейку плотностью в качестве вероятности. На каждом шаге один тип автомобиля движется вниз или вправо, оборачиваясь, если они проходят через край. Тип автомобиля, который движется, чередуется с каждым шагом. Чтобы сделать анимацию видимой, между каждым шагом должно быть не менее 10 мс.
правила
Автомобили могут быть любого цвета или символа, если они отличаются друг от друга и фона, и каждый тип автомобиля одного цвета или символа.
Консоль и графический вывод разрешены. Для вывода на консоль подойдет любой печатный символ, но вывод должен быть в виде сетки символов.
Пожалуйста, укажите, какой вывод вы создали, если у вас нет скриншота или GIF.
Симуляция должна работать вечно.
Вывод немного сложный, поэтому, если у вас есть какие-либо вопросы, пожалуйста, прокомментируйте.