tło
W późnych latach 90-tych / pierwszych 00-tych, kiedy Flash Web Design był tak fajny, że nikt nie mógł żyć bez pełnej witryny Flash lub przynajmniej animowanego widżetu, zostałem zatrudniony do opracowania „przeglądarki wyścigów konnych” we Flashu / ActionScript, w kształcie animacji z lat 80-tych, dzięki czemu odwiedzający stronę mogli nie tylko odczytać wyniki wyścigu, ale także zobaczyć je w ruchomej animacji! ŁAŁ! Imponujący!
Dostarczyli mi plik CSV ze wszystkimi szczegółami wyścigów: kolejnością startu i przyjazdu, nazwami koni, nazwiskami kierowców, nagrodami itp. Moja aplikacja Flash odczytała ten plik dla każdej rasy i wyświetliła wyżej wspomnianą animację.
Obecnie wsparcie Flasha zostało znacznie odrzucone, więc musimy wrócić do ascii-art !
Zadanie
Twoim zadaniem jest stworzenie pełnego programu lub funkcji, która odczyta dane wyścigu w formacie CSV ze standardowego wejścia i wygeneruje ascii-artową reprezentację wyścigu, jak pokazano w poniższym przykładzie.
WEJŚCIE
Dane CSV z 2 polami: 1) zamówienie początkowe; 2) czas przybycia na mecie w formacie 1.13.4
(1 minuta, 13 sekund, 4 dziesiąte sekundy). Jeśli raporty czasu R
oznaczają, że koń jest wycofany (nie ukończył wyścigu) z powodu incydentu, upadku lub innego powodu. Uwaga: czas przybycia może być taki sam dla 2 lub więcej koni, w tym przypadku dzielą pozycję przybycia.
1,1.13.4
2,1.13.0
3,R
4,1.12.7
5,1.11.5
6,1.13.4
7,1.12.1
8,1.17.9
WYNIK
Dla każdego wiersza CSV wygeneruj taki tor wyścigowy:
1_|______________4(1.13.0)___________________________
Tor wyścigowy składa się z:
1
czyli konie zaczynają porządek._|
gdzie_
jest odstępnik, a|
linia mety.- 50 x,
_
co odpowiada 50 dziesiątym części sekundy. 5(1.13.4)
to jest pozycja przybycia, po której następuje godzina przybycia. Musi to być ustawione z uwzględnieniem różnic czasowych między końmi. Na przykład: umieszczasz pierwszego przybywającego na linii mety w czasie1.11.5
, drugiego przybywa o czasie1.12.1
, różnica wynosi1.12.1 - 1.11.5 = 6
dziesiąte sekundy, więc drugi koń powinien być ustawiony na 6. znaku i tak dalej. Jeśli różnica czasu jest większa niż 50 dziesiątych sekund (lub 5 sekund), musisz ustawić konia na końcu. To samo, jeśli koń jestR
(wycofany).
Cały tor wyścigowy dla powyższych danych CSV powinien wynosić:
F=Finish line
1_|____________________________5(1.13.4)_____________
2_|______________4(1.13.0)___________________________
3_|__________________________________________________R
4_|___________3(1.12.7)______________________________
5_1(1.11.5)__________________________________________
6_|____________________________5(1.13.4)_____________
7_|_____2(1.12.1)____________________________________
8_|__________________________________________________6(1.17.9)
012345678901234567890123456789012345678901234567890
Nie ma potrzeby dodawania F=Finish line
, a ostatni wiersz 0123456789...
służy wyłącznie wyjaśnieniu celu.
Przypadki testowe
RACE:
1,1.14.9
2,R
3,R
4,1.14.2
5,1.15.2
6,1.15.3
7,1.15.3
RACE:
1,1.13.6
2,1.13.8
3,R,
4,1.15.9
5,1.13.8
6,R,
7,1.14.4
8,1.15.6
9,1.14.1
10,1.13.9
11,1.13.2
12,1.14.3
13,1.15.0
RACE:
1,1.13.4
2,1.13.0
3,R
4,1.12.7
5,1.11.5
6,1.13.4
7,1.12.1
8,1.17.9
RACE:
1,1.17.3
2,1.20.4
3,1.17.0
4,1.18.8
5,1.18.5
6,1.18.4
7,1.18.4
8,1.17.8
9,1.18.3
10,1.18.7
11,R
RACE:
1,1.17.5
2,R
3,1.17.7
4,1.16.9
5,1.16.1
6,1.18.9
RACE:
1,1.12.8
2,1.13.0
3,1.13.2
4,1.12.7
5,1.11.5
6,1.13.0
7,1.12.1
8,1.12.8
Zasady
- Najkrótszy kod wygrywa.
1
?R
koń niebędący koniem? (Wiem, że to nie jest rozsądne pytanie w prawdziwym życiu, ale to jest kod.)Odpowiedzi:
JavaScript (ES6), 261 bajtów
Pobiera tablicę ciągów czasowych
"1.ss.t"
jako dane wejściowe. Kolejność początkowa jest niejawna.Próbny
Pokaż fragment kodu
źródło
Python 2,
282272246 bajtówPodobnie jak w przypadku Arnaulda zakłada się, że dane wejściowe zostały już usunięte z liczby początkowej, ponieważ są niejawne.
źródło