Model ruchu Biham-Middleton-Levine jest samoorganizujące automat komórkowy, że modele uproszczone ruchu.
Składa się z wielu samochodów reprezentowanych przez punkty na kratce z losową pozycją początkową, przy czym każdy samochód może być jednego z dwóch rodzajów: te, które poruszają się tylko w dół (pokazane w tym artykule jako niebieskie) i te, które poruszają się tylko w kierunku prawo (pokazane w tym artykule na czerwono). Dwa rodzaje samochodów poruszają się na zmianę. Podczas każdej tury wszystkie samochody danego typu przechodzą o jeden krok do przodu, jeśli nie są blokowane przez inny samochód.
Twoim zadaniem jest wizualizacja tego modelu jako animacji. Oto kilka dobrych demonstracji.
Wejście
Liczba zmiennoprzecinkowa od 0 do 1 reprezentująca gęstość oraz dwie liczby całkowite reprezentujące wyświetlaną wysokość i szerokość siatki. Załóżmy, że dane wejściowe są prawidłowe, a parametry funkcji lub odczyt z danych wprowadzonych przez użytkownika są w porządku.
Przykład: 0.38 144 89
(odpowiada powyższemu obrazowi)
Wynik
Siatka o wymiarach co najmniej 80 x 80, która wyświetla animację uruchomionego modelu. Na początku samochody są losowo umieszczane na siatce, aż siatka osiągnie gęstość wejściową, z połową koloru czerwonego i pół niebieską (to jest gęstość razy całkowita liczba kwadratów siatki, zaokrąglona w dowolny sposób). Gęstość musi mieć tę wartość, co oznacza, że nie można wypełnić każdej komórki gęstością jako prawdopodobieństwa. Na każdym kroku jeden rodzaj samochodu porusza się w dół lub w prawo, owijając się, jeśli minie krawędź. Rodzaj poruszającego się samochodu zmienia się na każdym kroku. Aby animacja była widoczna, pomiędzy każdym krokiem musi być co najmniej 10 ms.
Zasady
Samochody mogą być dowolnego koloru lub symbolu, o ile można je odróżnić od siebie i tła, a każdy typ samochodu ma ten sam kolor lub symbol.
Konsola i wyjście graficzne są dozwolone. W przypadku danych wyjściowych z konsoli dowolny symbol do wydruku jest w porządku, ale dane wyjściowe muszą być w postaci siatki znaków.
Proszę określić, jaki rodzaj produkcji uzyskałeś, jeśli nie masz zrzutu ekranu lub gif.
Symulacja musi trwać wiecznie.
Wynik jest nieco złożony, więc jeśli masz jakieś pytania, prosimy o komentarz.