El modelo de tráfico Biham-Middleton-Levine es un autómata celular autoorganizado que modela el tráfico simplificado.
Consiste en una cantidad de automóviles representados por puntos en una red con una posición de inicio aleatoria, donde cada automóvil puede ser uno de dos tipos: aquellos que solo se mueven hacia abajo (se muestra en azul en este artículo) y aquellos que solo se mueven hacia el derecha (se muestra en rojo en este artículo). Los dos tipos de automóviles se turnan para moverse. Durante cada turno, todos los autos para el tipo correspondiente avanzan un paso si no están bloqueados por otro auto.
Su tarea es visualizar este modelo como una animación. Aquí hay algunas buenas demostraciones.
Entrada
Un número de coma flotante entre 0 y 1 que representa la densidad, y dos enteros que representan la altura y el ancho de la cuadrícula mostrada. Suponga que las entradas son válidas y que los parámetros para una función o lectura de entrada del usuario están bien.
Ejemplo: 0.38 144 89
(corresponde a la imagen de arriba)
Salida
Una cuadrícula, al menos 80x80, que muestra la animación de este modelo en ejecución. Al principio, los autos se colocan aleatoriamente en la cuadrícula hasta que la cuadrícula alcanza la densidad de entrada, con mitad rojo y mitad azul (es decir, densidad multiplicada por el número total de cuadrados de la cuadrícula, redondeados como desee). La densidad debe ser este valor, lo que significa que no puede llenar cada celda con densidad como una probabilidad. Para cada paso, un tipo de automóvil se mueve hacia abajo o hacia la derecha, envolviéndose si pasan el borde. El tipo de automóvil que se mueve alterna cada paso. Para que la animación sea visible, debe haber al menos 10 ms entre cada paso.
Reglas
Los automóviles pueden ser de cualquier color o símbolo, siempre que sean distinguibles entre sí y del fondo, y cada tipo de automóvil sea del mismo color o símbolo.
La consola y la salida gráfica están permitidas. Para la salida de la consola, cualquier símbolo imprimible está bien, pero la salida debe ser como una cuadrícula de caracteres.
Especifique qué tipo de salida ha producido si no tiene una captura de pantalla o gif.
La simulación debe ejecutarse para siempre.
El resultado es un poco complejo, así que si tiene alguna pregunta, por favor comente.