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