Antecedentes
A finales de los 90 / primeros 00's cuando Flash Web Design era tan genial que nadie podía vivir sin tener un sitio web Flash completo, o al menos un widget animado, me contrataron para desarrollar un "visor de carreras de caballos" en Flash / Actionscript, en forma de animación de videojuego de los años 80, para que los visitantes del sitio no solo puedan leer los resultados de la carrera, ¡sino que también puedan verlo en una animación en movimiento! ¡GUAUU! ¡Impresionante!
Me proporcionaron un archivo CSV con todos los detalles de las carreras: orden de inicio y llegada, nombres de caballos, nombres de conductores, premios, etc. Mi aplicación Flash leyó ese archivo para cada carrera y mostró la animación mencionada anteriormente.
Hoy en día, la compatibilidad con Flash se ha reducido significativamente, por lo que debemos volver al ascii-art .
Tarea
Su tarea es crear un programa o función completa que lea los datos de la carrera en formato CSV a partir de la entrada estándar y genere una representación ascii-art de la carrera como se muestra en el siguiente ejemplo.
ENTRADA
Datos CSV con 2 campos: 1) orden de inicio; 2) hora de llegada al Finish en el formato 1.13.4
(1 minuto, 13 segundos, 4 décimas de segundo). Si los informes de tiempo R
significan que el caballo se retiró (no terminó la carrera) debido a un incidente, caída u otra razón. Nota: La hora de llegada podría ser la misma para 2 o más caballos, en este caso comparten la posición de llegada.
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
SALIDA
Para cada fila CSV, genera una pista de carreras como esta:
1_|______________4(1.13.0)___________________________
La pista está compuesta por:
1
que es el orden de inicio de los caballos._|
donde_
hay un espaciador y|
es la línea de meta.- 50 x
_
que representa 50 décimas de segundo. 5(1.13.4)
esa es la posición de llegada seguida de la hora de llegada. Esto debe colocarse respetando las diferencias de tiempo entre los caballos. Por ejemplo: coloca el 1 ° llegado en la línea de meta en el momento1.11.5
, el segundo llega en el momento1.12.1
, la diferencia es1.12.1 - 1.11.5 = 6
décimas de segundo, por lo que el segundo caballo debe colocarse en el 6 ° carácter, y así sucesivamente. Si la diferencia de tiempo es más de 50 décimas de segundo (o 5 segundos), debe colocar el caballo al final. Lo mismo si el caballo estáR
(Retirado).
Entonces, toda la pista de carreras para los datos CSV anteriores debería ser:
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
No es necesario agregar F=Finish line
, y la última línea 0123456789...
es solo para explicar el propósito.
Casos de prueba
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
Reglas
- El código más corto gana.
1
?R
caballo? (Sé que esta no es una pregunta sensata en la vida real, pero este es el código).Respuestas:
JavaScript (ES6), 261 bytes
Toma una serie de cadenas de tiempo
"1.ss.t"
como entrada. El orden de inicio es implícito.Manifestación
Mostrar fragmento de código
fuente
Python 2,
282272246 bytesSimilar a Arnauld, se supone que la entrada ya está eliminada del número inicial, ya que es implícita.
fuente