Wprowadzenie
Mam niektóre samochody ASCII, które mają prędkość i kierunek. Ich prędkość jest reprezentowana przez ich liczbę. Jeśli samochód jest, <>
to zatrzymał się. Na przykład:
<>
1>
2>
3>
Po chwili rozumiem
<>
1>
2>
3>
Po drugiej dostaję
<>
1>
2>
3>
Jeśli dwa samochody są zbyt blisko, ulegają awarii.
1> <1
1> <2
Po chwili staje się
###
##
Gdyby dwa samochody przecięły się, stałyby się hashtagami, gdyby były.
Jeśli jeden samochód jest wystarczająco szybki, aby „przeskoczyć” nad drugim, nie powoduje to wypadku.
3><1 2><1 4><>
staje się
<13> ### <>4>
Jeśli samochód zniknie z ekranu, znika (chyba że nastąpiła awaria). Nie ma mowy, żeby samochód wyjechał bezpośrednio z ekranu.
<11>
<1 1>
1 1>
1>
Wyzwanie
Na podstawie danej fizyki samochodu musisz stworzyć program, który może przesunąć się w czasie o jedną sekundę w przyszłość. Dane wejściowe to samochody ze spacjami i maksymalną prędkością 5 (pasujące wyrażenie regularne (<[1-5]|[1-5]>|<>| )+
). Symulacja odbędzie się na jednej linii, jednak ta linia nie ma ustalonego rozmiaru.
Przypadki testowe
<> 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
Punktacja
To jest golf-golf, więc kod z najmniejszą liczbą bajtów wygrywa!
źródło
<>
Odpowiedzi:
JavaScript (ES6), 140 bajtów
Wypróbuj online!
Skomentował
źródło
JavaScript (Node.js) , 259 bajtów
254 do 259, ponieważ dodałem przypadek testowy, który nie był w testach, które skomplikowały moją wyszukiwarkę wyrażeń regularnych
Wypróbuj online!
źródło
Siatkówka , 178 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Wyjaśnienie:
Zajmij się skrzynią samochodu jadącego z lewej strony.
Tymczasowo uzupełnij cyfry samochodów poruszających się w lewo.
Ustaw każdy samochód na osobnej linii (
$.`* $&¶
) i dodaj wcięcie w zależności od prędkości samochodu; samochody poruszające się w lewo uzyskują dopełnioną prędkość, podczas gdy samochody nie poruszające się otrzymują o 5 więcej niż prędkość.Uzupełnij cyfry samochodu w lewo.
Przesuń wszystkie samochody 5 w lewo. To naprawia wcięcie dla wszystkich samochodów.
Usuń wszystkie samochody, które ruszyły w lewo.
Posortuj pozostałe samochody w odwrotnej kolejności poziomej.
Powtarzaj pozostałe etapy, aż wszystkie samochody zostaną przetworzone.
Dopóki następny samochód nie ulegnie awarii, dodaj go do wyniku.
Dodaj rozbity samochód do wyniku.
źródło