introduction
J'ai des voitures ASCII qui ont de la vitesse et de la direction. Leur vitesse est représentée par leur nombre. Si une voiture l'est, <>
elle s'est arrêtée. Par exemple:
<>
1>
2>
3>
Après une seconde, je reçois
<>
1>
2>
3>
Après deux, je reçois
<>
1>
2>
3>
Si deux voitures sont trop proches, elles s'écrasent.
1> <1
1> <2
Après une seconde, cela devient
###
##
Si deux voitures se croisent, elles deviennent des hashtags où elles le seraient.
Si une voiture est assez rapide pour «sauter» sur l'autre, cela n'entraîne pas de crash.
3><1 2><1 4><>
devient
<13> ### <>4>
Si une voiture disparaît hors écran, elle disparaît (sauf en cas d'accident). Il n'y a aucun moyen pour une voiture de sortir directement de l'écran.
<11>
<1 1>
1 1>
1>
Défi
Sur la base de la physique de la voiture donnée, vous devez créer un programme qui peut avancer d'une seconde dans le temps. L'entrée sera des voitures avec des espaces et une vitesse maximale de 5 (correspondant à l'expression régulière (<[1-5]|[1-5]>|<>| )+
). La simulation se fera sur une seule ligne, mais cette ligne n'a pas de taille fixe.
Cas de test
<> 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
Notation
C'est du code-golf , donc le code avec le plus petit nombre d'octets gagne!
la source
<>
une des vitesses 0Réponses:
JavaScript (ES6), 140 octets
Essayez-le en ligne!
Commenté
la source
JavaScript (Node.js) , 259 octets
254 à 259 parce que j'ai ajouté un cas de test qui n'était pas dans les cas de test, ce qui a compliqué mon résultat regex finder
Essayez-le en ligne!
la source
Rétine , 178 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication:
Manipulez le cas d'une voiture se déplaçant vers la gauche.
Complétez temporairement les chiffres des voitures se déplaçant vers la gauche.
Mettez chaque voiture sur sa propre ligne (
$.`* $&¶
) et ajoutez un retrait en fonction de la vitesse de la voiture; les voitures qui se déplacent vers la gauche obtiennent la vitesse complémentaire, tandis que les voitures qui ne bougent pas obtiennent 5 de plus que la vitesse.Ne complétez pas les chiffres de la voiture qui se déplace vers la gauche.
Déplacez toutes les voitures 5 vers la gauche. Cela corrige le retrait pour toutes les voitures.
Supprimez toutes les voitures qui se sont déplacées vers la gauche.
Triez les voitures restantes dans l'ordre horizontal inverse.
Répétez les étapes restantes jusqu'à ce que toutes les voitures aient été traitées.
Tant que la prochaine voiture ne tombe pas en panne, ajoutez-la au résultat.
Ajoutez une voiture qui s'écrase au résultat.
la source