Contexte
À la fin des années 90 / premiers 00, lorsque Flash Web Design était tellement cool que personne ne pouvait vivre sans avoir un site Web Flash complet, ou au moins un widget animé, j'ai été embauché pour développer une "visionneuse de courses de chevaux" dans Flash / Actionscript, sous la forme d'une animation de style jeu vidéo des années 80, de sorte que les visiteurs du site pouvaient non seulement lire les résultats de la course, mais ils pouvaient le voir dans une animation animée! HOU LA LA! Impressionnant!
Ils m'ont fourni un fichier CSV avec tous les détails des courses: ordre de départ et d'arrivée, noms des chevaux, noms des pilotes, prix, etc. Mon application Flash a lu ce fichier pour chaque course et a affiché l'animation ci-dessus.
De nos jours, le support Flash est considérablement diminué, nous devons donc revenir à ascii-art !
Tâche
Votre tâche consiste à créer un programme ou une fonction complète qui lit les données de course au format CSV à partir d'une entrée standard et génère une représentation ascii-art de la course, comme indiqué dans l'exemple ci-dessous.
CONTRIBUTION
Données CSV avec 2 champs: 1) ordre de départ; 2) heure d'arrivée à l'arrivée au format 1.13.4
(1 minute, 13 secondes, 4 dixièmes de seconde). Si le rapport de temps R
signifie que le cheval est en retraite (n'a pas terminé la course) en raison d'un incident, d'une chute ou d'une autre raison. Remarque: L'heure d'arrivée peut être la même pour 2 chevaux ou plus, dans ce cas, ils partagent la position d'arrivée.
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
PRODUCTION
Pour chaque ligne CSV, sortez un circuit comme celui-ci:
1_|______________4(1.13.0)___________________________
L'hippodrome est composé de:
1
qui est l'ordre de départ des chevaux._|
où_
est un espaceur et|
est la ligne d'arrivée.- 50 x
_
qui représente 50 dixièmes de seconde. 5(1.13.4)
c'est la position d'arrivée suivie de l'heure d'arrivée. Celui-ci doit être positionné en respectant les décalages horaires entre chevaux. Par exemple: vous positionnez le 1er arrivé sur la ligne d'arrivée au moment1.11.5
, le second arrive au moment1.12.1
, la différence est de1.12.1 - 1.11.5 = 6
dixièmes de seconde, donc le deuxième cheval doit être positionné au 6ème caractère, et ainsi de suite. Si le décalage horaire est supérieur à 50 dixièmes de secondes (ou 5 secondes), vous devez positionner le cheval à la fin. De même si le cheval estR
(Retraité).
Donc, l'hippodrome entier pour les données CSV ci-dessus devrait être:
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
Il n'est pas nécessaire d'ajouter F=Finish line
, et la dernière ligne 0123456789...
est uniquement destinée à expliquer le but.
Cas de 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
Règles
- Le code le plus court gagne.
1
?
R
cheval? (Je sais que ce n'est pas une question sensée dans la vraie vie, mais c'est du code.)