给定一个ASCII艺术道路,我花了时间去跨过它,告诉我,如果我是超速行驶。
单位
距离以的任意单位表示d
。时间以的任意单位表示t
。
马路
这是一条简单的路:
10=====
的10
装置10 d
每t
。那是道路的速度极限。这条路有5 =
s,所以它d
是5。因此,如果我以0.5越过那条路t
,我d
每10条走10条t
,因为5 / 0.5 =10。那条路的速度限制是10,所以我一直在速度限制之内。
但是,如果我越过该道路在0.25 t
,我去20 d
每t
,因为5 / 0.25 = 20。即道路的速度限制是10,所以我去10超速。
实例与计算
请注意,输入1是我花在道路上的时间,输入2是道路本身。
这是一条复杂的路:
Input 1: 1.5
Input 2: 5=====10=====
在第一条道路上(最初的5 =
秒钟),我本可以(合法)行驶的最快速度是5 d
分t
。因为5(距离)除以5(速度限制)是1,所以我在那条路上走得最快的速度是1 t
。
在下一条道路上,速度极限是10,距离也是5,我可以越过的最快速度是0.5(5/10)。最小时间总计为1.5,这意味着我完全达到了速度极限。
注意:我知道,我在一条道路上的行驶可能确实非常快,而在另一条道路上的行驶速度确实很慢,但仍以1.5交叉,但此处假定最佳。
最后一个例子:
Input 1: 3.2
Input 2: 3.0==========20===
第一条道路为10长,速度限制为3,因此最短时间为3.33333 ...(10/3)。
第二条路长3,速度限制为20,因此最短时间为0.15(3/20)。
总的时间结果是3.483333333 ...我在3.2中越过了,所以我不得不超速行驶。
笔记:
- 如果我毫无疑问要超速行驶,则必须输出一个不同的值,如果我可能不是,则必须输出另一个不同的值。
- 您的程序或函数可能需要输入或输出以尾随换行符,但请在您的提交中说明。
- 您的第一个输入将是我的速度。这将是一个正浮点数或整数或字符串。
- 您的第二个输入将是道路。它将始终与正则表达式匹配
^(([1-9]+[0-9]*|[0-9]+\.[0-9]+)=+)+\n?$
。如果您有兴趣,可以在这里测试潜在的输入。 - 您可以从STDIN两次,或者从传递给STDIN的以空格分隔的字符串,函数,文件或命令行参数中,在2个单独的文件中,输入函数或程序的2个参数中的输入。
- 如果需要,可以更改输入的顺序。
- 任何问题?在下面的注释和快乐的代码打扰中询问!
^(([1-9]+[0-9]*|(?!0\.0+\b)[0-9]+\.[0-9]+)=+)+\n?$
。(本来可以看起来更干净,但随后需要.Net引擎)