警察和强盗:反正则表达式高尔夫
注意:此挑战现已关闭。以后的警察提交的任何意见都不会被视为接受的答案。这是为了确保将来没有人可以发布一个非常简单的正则表达式,而这个正则表达式将保持不变,因为没有人再对挑战感兴趣。 警察的挑战 您将编写满足以下规范的简短正则表达式: 您可以选择任何可以在线免费测试的口味。在StackOverflow上有很多在线测试人员。Regex101特别适合入门,因为它支持PCRE,ECMAScript和Python风格。您可以根据需要通过单击右上角的扳手来增加超时限制。请在答案中包括您选择的测试仪。 如果没有适合您选择的测试器,则您还可以使用ideone这样的在线解释器,并用宿主语言编写一个小脚本,人们可以使用该脚本来测试您的提交。 您可以使用该功能的任何功能,而这些功能不会直接调用宿主语言(例如Perl的代码评估功能)。 同样,您可以使用任何修饰符(如果您的口味中有修饰符),除非它们导致代码评估。 您的正则表达式必须在合理的时间内(不超过一分钟)接受至少一个字符串S,并拒绝至少一个字符串T,每个字符串T的长度至少为16且不超过256个字符。S和T可以包含非ASCII的Unicode字符,只要可以将它们输入到在线测试器中即可。任何这样的字符串对都是提交内容的关键。 您的正则表达式可能会花费任意其他输入任意长时间。 挑战的核心是制作很难找到密钥的正则表达式。就是说,要么很难分辨出不匹配的字符串,要么很难分辨出匹配的字符串(或者即使正则表达式需要几天才能完成除键的字符串之外的所有字符串)。 强盗的挑战 鼓励所有用户,包括提交了自己的正则表达式的用户,“破解”其他提交的内容。将提交的其中一个键发布在关联的注释部分时,该提交将被破解。 重要说明:即使您几乎可以将任何字符串用作键的一部分,也请确保发布的两个字符串都在16至256个字符(包括16个字符)之间。 如果提交内容持续存在72小时而没有被修改或破解,则作者可以通过将其编辑为答案中的破坏者标签来显示有效密钥。这将使他的回答“安全”,即不再被破解。 每个用户每次提交只能进行一次破解尝试。例如,如果我向用户X提交:“您的密钥是0123456789abcdef/ fedcba9876543210。” 并且我错了,用户X会否认我的猜测是错误的,并且我将不再能够为该提交提交其他猜测,但是我仍然可以破解其他提交(其他人仍然可以破解该提交)。 破解的提交将被排除在争用之外(前提是它们“不安全”)。不应编辑或删除它们。如果作者希望提交新的正则表达式,则应在单独的答案中提交。 不要破解自己的提交! 注意:对于注释中的长字符串(不含空格),SE会以两个Unicode字符的形式插入手动换行符。因此,如果您在反引号中发布密钥的时间过长,以至于在非空格字符之间换行,则无法将密钥直接复制回正则表达式测试器中。在这种情况下,请提供与警察的正则表达式和您的密钥相关的正则表达式测试人员的永久链接-大多数测试人员都包括此功能。 计分 警察的得分将是其正则表达式的大小(以字节为单位)(如果不破解,则不包括模式加修饰符,不包括潜在的定界符)。“安全”提交的最低分数将获胜。 强盗的分数将是他们破解的提交数量。如果出现平局,则他们破解的提交的总字节大小将用于平局。在这里,最高字节数获胜。 如上所述,任何警察都可以作为强盗参加,反之亦然。 我将为挑战的两个部分分别维护排行榜。 排行榜 最近更新:2014/10/19,20:33 UTC 警察: 斜体提交尚不安全。 nneonneo,841字节 Wumpus Q.Wumbley,10,602字节 SP3000,52506个字节 user23013,53,884字节 nneonneo,656,813字节 强盗: user23013,破解:11,总大小: 733 + 30 + 2,447 + 71 + 109 + 121 + …