1984年,迈克尔·克里顿(Michael Crichton)用BASIC编写了一个安全程序,该程序已发布在《创意计算》杂志上。该程序将要求用户键入自己选择的短语,记录击键之间的间隔,然后要求她重新键入该短语。如果时间差异太大,则程序会将用户识别为冒名顶替者。
您的任务:以您选择的语言创建Crichton程序的版本。
规则:
与用户通信的短语(“请输入关键词”,“请再次输入关键词”等)无论实际长度如何,均计为一个字节。这仅用于用户通信,请勿尝试在字符串中隐藏程序代码。
通过/失败测试应基于与原始间隔的百分比差异的平均绝对值。如果字符串不匹配,请自行决定返回失败还是允许用户重试。
关键字短语不应包含空字符串。如果关键字对于您的字符串数据类型太长,则可以自行决定是截断还是不允许重新开始。
测试的灵敏度(通过/失败测试的阈值)应在源代码中进行调整。
如果您的源代码可以格式化为可识别的类似于恐龙,那么我最初会提供总字节数的20%的奖励。已经指出,这是高度主观的,也许更适合于流行竞赛,所以我删除了此奖金。但是,我仍然衷心鼓励恐龙格式化,如果将代码格式化为看起来像恐龙,则可以从字节总数中扣除任何纯修饰性的注释,换行符或空格字符。
最短的字节数获胜,具体取决于字符串长度和恐龙格式调整。
请注意,我上面的说明与Crichton代码的操作不完全匹配,可以在网上找到其副本。请遵循规范,不要尝试克隆原始文件。
"Please type the key phrase"
计数为1个字节,还是仅短语计数和带引号的短语计数为3个字节("
,短语,"
)?是否有意让更长的时间间隔和更短的时间间隔“抵消”并再次变得均匀?程序是否必须验证两个关键短语是否匹配?