Mathematica(笔记本表达式),248个字节
DynamicModule[{x={},s=0,t=0},EventHandler[Framed@Dynamic[If[x=={"a"}&&s<1,s=SessionTime[]];Which[x==a,If[t==0,t=SessionTime[]-s];1000t,x==a~Take~Length@x,""<>x,1>0,"Fail"]],Table[{"KeyDown",c}:>x~AppendTo~CurrentValue@"EventKey",{c,a=Alphabet[]}]]]
这个怎么运作
DynamicModule[{x={},s=0,t=0},
EventHandler[
Framed@Dynamic[
If[x=={"a"} && s<1,s=SessionTime[]];
Which[
x==a,If[t==0,t=SessionTime[]-s];1000t,
x==a~Take~Length@x,""<>x,
1>0,"Fail"]],
Table[{"KeyDown",c}:>x~AppendTo~CurrentValue@"EventKey",
{c,a=Alphabet[]}]]]
一个DynamicModule
与EventHandler
该响应小写字母按键。变量x
,s
和分别t
保持到目前为止按下的字母,开始时间和结束时间。一旦发现x
等于{"a"}
,我们就开始计时。我们将显示花费的总时间,或显示到目前为止构建的字符串,或显示"Fail"
是否满足条件。
我们可以节省一个字节,t<1
而不是t==0
假设没有人能在不到一秒钟的时间内输入字母:)
如果要在Mathematica笔记本中进行尝试,请记住,必须先在框架内单击,然后才能注册按键。(这就是我们需要框架开始的原因;如果Framed
不存在该框架,那么当按下一个键时,所选的整个对象都会更改,因此它将停止被选择,而您必须再次单击。)