Un montón de autos están alineados en una señal de alto de 4 vías esperando para continuar. Todos están confundidos acerca de quién irá después, quién irá en qué dirección, etc. Claramente subóptimo.
Su trabajo es programar el tráfico en la señal de stop de manera óptima.
Recibe como entrada 4 cadenas de solicitudes de turno, una para cada una de las cuatro direcciones cardinales. Cada solicitud es L
para izquierda, S
para recta o R
para derecha.
LLSLRLS
SSSRRSRLLR
LLRLSR
RRRLLLL
La primera fila es la alineación en la entrada norte a la intersección. El primer automóvil en línea desea girar a la izquierda (es decir, salir hacia el este). Las siguientes filas son para las entradas entrantes Este, Sur y Oeste. Entonces, el primer automóvil que viene del oeste desea salir del sur.
El tráfico se mueve en una serie de pasos. En cada paso, debe elegir un subconjunto de los automóviles en la cabecera de sus líneas para continuar. Los coches elegidos no deben interferir entre sí. Dos autos interfieren si salen en la misma dirección o si deben cruzarse en el camino del otro (dadas las reglas estándar de manejo a la derecha). Entonces, dos autos opuestos que deseen ir en línea recta pueden ir al mismo paso. Entonces, 4 autos que deseen girar a la derecha. Dos autos opuestos pueden girar a la izquierda simultáneamente.
Su trabajo es programar la intersección en una serie mínima de pasos. Para cada paso, muestre una línea con las direcciones de la brújula de los automóviles entrantes enumeradas. Para el ejemplo anterior, el horario mínimo es de 14 pasos. Un horario mínimo es:
N [L from North]
E [S from East]
E [S from East]
E [S from East]
NESW [L from North, R from East, L from South, R from West]
NE [S from North]
EW [R from East]
NESW [L from North, R from East, L from South, R from West]
W [L from West]
EW [L from East, L from West]
NESW [R from North, L from East, R from South, L from West]
NES [L from North, R from East, L from West]
NS [S from North, S from South]
SW [R from South, L from West]
Su programa debería poder manejar 50 autos en cada línea en menos de 1 minuto. La entrada de las 4 cadenas y la salida del programa pueden ser de cualquier manera conveniente para su idioma.
El programa más corto gana.
Un ejemplo más amplio:
RRLLSSRLSLLSSLRSLR
RLSLRLSLSSRLRLRRLLSSRLR
RLSLRLRRLSSLSLLRLSSL
LLLRRRSSRSLRSSSSLLRRRR
que requiere un mínimo de 38 rondas. Una posible solución:
E
EW
E
ESW
S
NS
ES
NESW
NSW
ESW
ES
NSW
NS
NS
NW
EW
NSW
NS
EW
NES
EW
NSW
NE
E
NE
EW
E
E
EW
EW
EW
W
ESW
NSW
NSW
NS
NSW
NEW