背景
上世纪90年代末/ 00年代初,Flash Web Design非常酷,以至没有一个完整的Flash网站或至少没有动画小部件的人都无法生存,我受雇在Flash / Actionscript中开发“赛马查看器”,以80年代电子游戏风格的动画形式呈现,因此网站的访问者不仅可以阅读比赛结果,还可以通过动态动画观看比赛结果!哇!令人印象深刻!
他们向我提供了一个CSV文件,其中包含所有比赛的详细信息:开始和到达的顺序,赛马名称,车手姓名,奖品等。我的Flash应用程序为每次比赛读取该文件,并显示上述动画。
如今,Flash支持已大大下降,因此我们必须恢复为ascii-art!
任务
您的任务是创建一个完整的程序或函数,以从标准输入中读取CSV格式的比赛数据,并输出该比赛的ascii艺术表示形式,如下例所示。
输入
带有2个字段的CSV数据:1)开始顺序;2)到达完成时间的时间格式1.13.4
(1分钟,13秒,十分之四秒)。如果时间报告R
表明该马由于事件,跌倒或其他原因而退赛(未完成比赛)。注意:两匹或更多匹马的到达时间可能相同,在这种情况下,它们共享到达位置。
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
输出值
对于每个CSV行,输出如下所示的赛马场:
1_|______________4(1.13.0)___________________________
赛马场由以下人员组成:
1
这是马匹的起跑顺序。_|
_
垫片在哪里|
,终点线在哪里。- 50 x
_
表示十分之一秒。 5(1.13.4)
即到达位置,然后是到达时间。这必须考虑到马之间的时差。例如:您将第一个到达的时间定位在终点线上1.11.5
,第二个到达的时间1.12.1
,相差1.12.1 - 1.11.5 = 6
十分之一秒,因此第二匹马应定位在第6个字符上,依此类推。如果时间差超过十分之一秒(或5秒),则必须将马匹放在最后。如果马是R
(退缩),则相同。
因此,上面CSV数据的整个运行轨道应为:
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
无需添加F=Finish line
,最后一行0123456789...
仅用于说明目的。
测试用例
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
规则
- 最短的代码获胜。
在并列第5的示例中,马8是否仍排在第7位?
—
乔纳森·艾伦
我们可以假设分钟数始终是
—
ETHproductions's
1
吗?
@JonathanAllan这取决于规则,在本示例中,我假设如果马匹排名第五,那么下一个将被认为是第六。
—
马里奥
@ETHproductions是的,您可以假设分钟始终是1。–
—
Mario
另外,我们是否可以假设总是有非
—
PurkkaKoodari,2016年
R
赛马?(我知道这不是现实生活中的明智问题,但这是代码。)