Il modello di traffico Biham-Middleton-Levine è un automa cellulare auto-organizzante che modella il traffico semplificato.
Consiste in un numero di auto rappresentate da punti su un reticolo con una posizione di partenza casuale, in cui ogni auto può essere di due tipi: quelli che si muovono solo verso il basso (mostrati in blu in questo articolo) e quelli che si muovono solo verso il a destra (mostrato in rosso in questo articolo). I due tipi di auto si alternano per muoversi. Durante ogni curva, tutte le auto del tipo corrispondente avanzano di un passo se non sono bloccate da un'altra macchina.
Il tuo compito è visualizzare questo modello come un'animazione. Ecco alcune buone dimostrazioni.
Ingresso
Un numero in virgola mobile compreso tra 0 e 1 che rappresenta la densità e due numeri interi che rappresentano l'altezza e la larghezza della griglia visualizzate. Supponiamo che gli input siano validi e che i parametri di una funzione o della lettura dall'input dell'utente siano entrambi corretti.
Esempio: 0.38 144 89
(corrisponde all'immagine sopra)
Produzione
Una griglia, almeno 80x80, che visualizza l'animazione di questo modello in esecuzione. All'inizio, le auto vengono posizionate casualmente sulla griglia fino a quando la griglia non raggiunge la densità di input, con metà rossa e metà blu (ovvero la densità per il numero totale di quadrati della griglia, arrotondati come preferisci). La densità deve essere questo valore, il che significa che non è possibile riempire ogni cella con densità come probabilità. Per ogni passaggio, un tipo di auto si sposta verso il basso o verso destra, avvolgendosi se oltrepassano il bordo. Il tipo di auto che si muove alterna ogni passaggio. Per rendere visibile l'animazione, devono essere presenti almeno 10 ms tra ogni passaggio.
Regole
Le auto possono avere qualsiasi colore o simbolo purché siano distinguibili tra loro e lo sfondo e ogni tipo di auto ha lo stesso colore o simbolo.
Consolle e output grafico sono entrambi consentiti. Per l'output della console, qualsiasi simbolo stampabile va bene, ma l'output deve essere una griglia di caratteri.
Per favore specifica quale tipo di output hai prodotto se non hai uno screenshot o una gif.
La simulazione deve essere eseguita per sempre.
L'output è un po 'complesso, quindi se avete domande, si prega di commentare.