sfondo
Alla fine degli anni 90 / primi 00 quando Flash Web Design era così bello che nessuno poteva vivere senza un sito Web Flash completo o almeno un widget animato, sono stato assunto per sviluppare un "visualizzatore di corse di cavalli" in Flash / Actionscript, sotto forma di un'animazione in stile videogioco anni '80, quindi i visitatori del sito non solo potevano leggere i risultati della gara, ma potevano vederla in un'animazione commovente! WOW! Degno di nota!
Mi hanno fornito un file CSV con tutti i dettagli delle gare: ordine di partenza e arrivo, nomi dei cavalli, nomi dei piloti, premi, ecc. La mia app Flash ha letto quel file per ogni gara e ha mostrato l'animazione sopra menzionata.
Oggi il supporto di Flash è notevolmente diminuito, quindi dobbiamo tornare a ascii-art !
Compito
Il tuo compito è quello di creare un programma o una funzione completi che leggano i dati della gara in formato CSV dall'input standard e producano una rappresentazione ascii-art della gara, come mostrato nell'esempio seguente.
INGRESSO
Dati CSV con 2 campi: 1) inizio ordine; 2) orario di arrivo al traguardo nel formato 1.13.4(1 minuto, 13 secondi, 4 decimi di secondo). Se il tempo Rindica che il cavallo è ritirato (non ha terminato la corsa) a causa di incidenti, cadute o altri motivi. Nota: l'orario di arrivo potrebbe essere lo stesso per 2 o più cavalli, in questo caso condividono la posizione di arrivo.
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
PRODUZIONE
Per ogni riga CSV, genera una pista come questa:
1_|______________4(1.13.0)___________________________
La pista è composta da:
1quale è l'ordine di inizio dei cavalli._|dove si_trova un distanziatore e|il traguardo.- 50 x
_che rappresenta 50 decimi di secondo. 5(1.13.4)questa è la posizione di arrivo seguita dall'ora di arrivo. Questo deve essere posizionato rispettando le differenze di tempo tra i cavalli. Ad esempio: posiziona il 1 ° arrivato sul traguardo alla volta1.11.5, il secondo arriva alla volta1.12.1, la differenza è di1.12.1 - 1.11.5 = 6decimi di secondo, quindi il secondo cavallo dovrebbe essere posizionato al 6 ° carattere e così via. Se la differenza di tempo è superiore a 50 decimi di secondo (o 5 secondi) è necessario posizionare il cavallo alla fine. Lo stesso se il cavallo èR(ritirato).
Quindi l'intera pista per i dati CSV sopra dovrebbe essere:
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
Non è necessario aggiungere F=Finish linee l'ultima riga 0123456789...è solo a scopo esplicativo.
Casi test
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
Regole
- Il codice più corto vince.
1?
Rcavallo? (So che questa non è una domanda ragionevole nella vita reale, ma questo è un codice.)