Introducción
Tengo algunos autos ASCII que tienen velocidad y dirección. Su velocidad está representada por su número. Si hay un automóvil, <>
entonces se ha detenido. Por ejemplo:
<>
1>
2>
3>
Después de un segundo, obtengo
<>
1>
2>
3>
Después de las dos, me sale
<>
1>
2>
3>
Si dos autos están demasiado cerca, chocan.
1> <1
1> <2
Después de un segundo, esto se convierte
###
##
Si dos autos se cruzan, se convierten en hashtags donde serían.
Si un automóvil es lo suficientemente rápido como para 'saltar' sobre el otro, no se produce un choque.
3><1 2><1 4><>
se convierte
<13> ### <>4>
Si un automóvil queda fuera de la pantalla, desaparece (a menos que haya un choque). No hay forma de que un automóvil salga directamente de la pantalla.
<11>
<1 1>
1 1>
1>
Desafío
Basado en la física del automóvil dada, debe crear un programa que pueda adelantar un segundo en el futuro. La entrada será autos con espacios y una velocidad máxima de 5 (expresiones regulares coincidentes(<[1-5]|[1-5]>|<>| )+
). La simulación ocurrirá en una línea, sin embargo, esa línea no tiene un tamaño fijo.
Casos de prueba
<> 1> 2> 3> 4> 5>
<> 1> 2> 3> 4> 5>
1><1 1> <1 1> <1
## ### 1><1
2><2 2> <2 2> <2 2> <2 2> <2
<22> ### ## ### 2><2
<22> <1 3> <2
### ##
<><> 1><> 2><> 3><> 4><> 5><>
<><> ### ## ### <>4> <> 5>
<><1 <2 <3 <4 <5
###<2<3<4<5
Puntuación
Este es el código de golf , ¡así que gana el código con el menor número de bytes!
fuente
<>
velocidad media 0Respuestas:
JavaScript (ES6), 140 bytes
Pruébalo en línea!
Comentado
fuente
JavaScript (Node.js) , 259 bytes
254 a 259 porque agregué un caso de prueba que no estaba en los casos de prueba que complicaron mi buscador de expresiones regulares
Pruébalo en línea!
fuente
Retina , 178 bytes
Pruébalo en línea!El enlace incluye casos de prueba. Explicación:
Maneje la caja de un automóvil que se mueve por la izquierda.
Complemente temporalmente los dígitos de los automóviles que se mueven hacia la izquierda.
Ponga cada auto en su propia línea (
$.`* $&¶
) y agregue un poco de sangría dependiendo de la velocidad del automóvil; los automóviles que se mueven hacia la izquierda obtienen la velocidad complementada, mientras que los automóviles que no se mueven obtienen 5 más que la velocidad.Descomponga los dígitos del automóvil que se desplazan hacia la izquierda.
Mueve todos los autos 5 hacia la izquierda. Esto corrige la sangría para todos los automóviles.
Eliminar todos los autos que se han movido por la izquierda.
Ordene los autos restantes en orden horizontal inverso.
Repita las etapas restantes hasta que todos los autos hayan sido procesados.
Mientras el próximo auto no choque, agréguelo al resultado.
Agregue un auto chocando al resultado.
fuente