Latar Belakang
Kembali di akhir 90-an / 00-an pertama ketika Desain Web Flash sangat keren sehingga tidak ada yang bisa hidup tanpa memiliki situs web Flash penuh, atau setidaknya widget animasi, saya disewa untuk mengembangkan "penampil pacuan kuda" di Flash / Actionscript, dalam bentuk animasi gaya videogame 80-an, sehingga pengunjung situs tidak hanya bisa membaca hasil balapan, tetapi mereka bisa melihatnya dalam animasi bergerak! WOW! Impresif!
Mereka memberi saya file CSV dengan semua detail balapan: urutan mulai dan kedatangan, nama kuda, nama pengemudi, hadiah, dll. Aplikasi Flash saya membaca file itu untuk setiap balapan dan menampilkan animasi yang disebutkan di atas.
Saat ini dukungan Flash ditolak secara signifikan, jadi kami harus kembali ke ascii-art !
Tugas
Tugas Anda adalah membuat program atau fungsi lengkap yang membaca data balapan dalam format CSV dari input standar dan menghasilkan representasi ascii-art dari balapan seperti yang ditunjukkan pada contoh di bawah ini.
MEMASUKKAN
Data CSV dengan 2 bidang: 1) mulai pesanan; 2) waktu kedatangan di Selesai dalam format 1.13.4
(1 menit, 13 detik, 4 persepuluh detik). Jika laporan waktu R
berarti bahwa kuda itu Retreated (tidak menyelesaikan lomba) karena insiden, jatuh atau alasan lainnya. Catatan: Waktu kedatangan bisa sama untuk 2 kuda atau lebih, dalam hal ini mereka berbagi posisi kedatangan.
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
KELUARAN
Untuk setiap baris CSV, tampilkan pacuan kuda seperti ini:
1_|______________4(1.13.0)___________________________
Jalur pacuan kuda ini disusun oleh:
1
yang merupakan urutan mulai kuda._|
Dimana_
spacer dan|
garis finish.- 50 x
_
yang mewakili 50 persepuluh detik. 5(1.13.4)
itu adalah posisi kedatangan diikuti oleh waktu kedatangan. Ini harus diposisikan dengan menghormati perbedaan waktu antara kuda. Sebagai contoh: Anda memposisikan 1 tiba pada garis Finish pada waktu1.11.5
, yang kedua tiba pada waktu1.12.1
, perbedaannya adalah1.12.1 - 1.11.5 = 6
sepersepuluh detik, sehingga kuda kedua harus diposisikan pada karakter ke-6, dan seterusnya. Jika perbedaan waktu lebih dari 50 persepuluh detik (atau 5 detik), Anda harus meletakkan kuda di ujung. Sama jika kudanyaR
(mundur).
Jadi seluruh arena pacuan kuda untuk data CSV di atas harus:
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
Tidak perlu menambahkan F=Finish line
, dan baris terakhir 0123456789...
hanya untuk menjelaskan tujuan.
Uji kasus
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
Aturan
- Kode terpendek menang.
1
?R
kuda? (Saya tahu ini bukan pertanyaan yang masuk akal dalam kehidupan nyata, tapi ini kode.)Jawaban:
JavaScript (ES6), 261 byte
Mengambil array string waktu
"1.ss.t"
sebagai input. Urutan awal tersirat.Demo
Tampilkan cuplikan kode
sumber
Python 2,
282272246 byteMirip dengan Arnauld input diasumsikan sudah dilucuti dari angka awal karena implisit.
sumber