Einführung
Ich habe einige ASCII-Autos, die Geschwindigkeit und Richtung haben. Ihre Geschwindigkeit wird durch ihre Anzahl dargestellt. Wenn ein Auto ist <>
, hat es angehalten. Beispielsweise:
<>
1>
2>
3>
Nach einer Sekunde bekomme ich
<>
1>
2>
3>
Nach zwei bekomme ich
<>
1>
2>
3>
Wenn zwei Autos zu nahe sind, stürzen sie ab.
1> <1
1> <2
Nach einer Sekunde wird dies
###
##
Wenn sich zwei Autos kreuzen, werden sie zu Hashtags, wo sie wären.
Wenn ein Auto schnell genug ist, um über das andere zu springen, führt dies nicht zu einem Unfall.
3><1 2><1 4><>
wird
<13> ### <>4>
Wenn ein Auto außerhalb des Bildschirms fährt, verschwindet es (es sei denn, es liegt ein Unfall vor). Es gibt keine Möglichkeit für ein Auto, direkt außerhalb des Bildschirms zu fahren.
<11>
<1 1>
1 1>
1>
Herausforderung
Basierend auf der gegebenen Fahrzeugphysik müssen Sie ein Programm erstellen, das eine Sekunde in die Zukunft führen kann. Die Eingabe sind Autos mit Leerzeichen und einer maximalen Geschwindigkeit von 5 (passender Regex (<[1-5]|[1-5]>|<>| )+
). Die Simulation wird in einer Zeile durchgeführt, diese Zeile hat jedoch keine feste Größe.
Testfälle
<> 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
Wertung
Dies ist Code-Golf , also gewinnt Code mit der geringsten Anzahl von Bytes!
quelle
<>
Geschwindigkeit 0Antworten:
JavaScript (ES6), 140 Byte
Probieren Sie es online aus!
Kommentiert
quelle
JavaScript (Node.js) , 259 Byte
254 bis 259, weil ich einen Testfall hinzugefügt habe, der nicht in den Testfällen enthalten war, die meinen Ergebnis-Regex-Finder kompliziert haben
Probieren Sie es online aus!
quelle
Netzhaut , 178 Bytes
Probieren Sie es online aus! Link enthält Testfälle. Erläuterung:
Behandeln Sie den Fall eines Autos, das von links abfährt.
Ergänzen Sie vorübergehend die Ziffern von Autos, die sich nach links bewegen.
Setzen Sie jedes Auto in eine eigene Zeile (
$.`* $&¶
) und fügen Sie je nach Geschwindigkeit des Autos einen Einzug hinzu. Links fahrende Autos erhalten die komplementierte Geschwindigkeit, während nicht fahrende Autos 5 mehr als die Geschwindigkeit erhalten.Unkomplementieren Sie die linksgerichteten Ziffern des Autos.
Bewegen Sie alle Autos 5 nach links. Dies behebt den Einzug für alle Autos.
Löschen Sie alle Autos, die links abgebogen sind.
Sortieren Sie die verbleibenden Fahrzeuge in umgekehrter horizontaler Reihenfolge.
Wiederholen Sie die verbleibenden Schritte, bis alle Fahrzeuge bearbeitet wurden.
Solange das nächste Auto nicht abstürzt, fügen Sie es dem Ergebnis hinzu.
Fügen Sie dem Ergebnis ein krachendes Auto hinzu.
quelle