Le modèle de trafic Biham-Middleton-Levine est un automate cellulaire auto-organisé qui modélise le trafic simplifié.
Il se compose d'un certain nombre de voitures représentées par des points sur un réseau avec une position de départ aléatoire, où chaque voiture peut être de deux types: celles qui ne se déplacent que vers le bas (indiquées en bleu dans cet article), et celles qui se déplacent uniquement vers le à droite (représenté en rouge dans cet article). Les deux types de voitures se déplacent à tour de rôle. A chaque tour, toutes les voitures du type correspondant avancent d'un pas si elles ne sont pas bloquées par une autre voiture.
Votre tâche consiste à visualiser ce modèle sous forme d'animation. Voici quelques bonnes démonstrations.
Contribution
Un nombre à virgule flottante compris entre 0 et 1 représentant la densité et deux entiers représentant la hauteur et la largeur de la grille affichées. Supposons que les entrées sont valides et que les paramètres d'une fonction ou la lecture de l'entrée utilisateur sont tous les deux corrects.
Exemple: 0.38 144 89
(correspond à l'image ci-dessus)
Production
Une grille, au moins 80x80, qui affiche l'animation de ce modèle en cours d'exécution. Au début, les voitures sont placées au hasard sur la grille jusqu'à ce que la grille atteigne la densité d'entrée, avec moitié rouge et moitié bleu (c'est-à-dire la densité multipliée par le nombre total de carrés de grille, arrondis comme vous le souhaitez). La densité doit être cette valeur, ce qui signifie que vous ne pouvez pas remplir chaque cellule de densité comme probabilité. Pour chaque étape, un type de voiture se déplace vers le bas ou vers la droite, s'enroulant autour du bord. Le type de voiture qui se déplace alterne chaque étape. Pour rendre l'animation visible, il doit y avoir au moins 10 ms entre chaque étape.
Règles
Les voitures peuvent être de n'importe quelle couleur ou symbole tant qu'elles peuvent être distinguées les unes des autres et de l'arrière-plan, et chaque type de voiture est de la même couleur ou du même symbole.
La console et la sortie graphique sont toutes deux autorisées. Pour la sortie de la console, tout symbole imprimable convient, mais la sortie doit être une grille de caractères.
Veuillez spécifier le type de sortie que vous avez produit si vous n'avez pas de capture d'écran ou de gif.
La simulation doit fonctionner pour toujours.
La sortie est un peu complexe, donc si vous avez des questions, veuillez commenter.