当且仅当最后一个整数是前两个整数的和时,编写一个正则表达式,该表达式与给定的字符串匹配,该字符串由三个非负号,空格分隔的整数组成。答案可能是小数在2到10之间的任何数字系统的整数。
测试用例
这些应该失败:
0 1 2
10 20 1000
这些应该匹配:
10 20 30
28657 46368 75025
0 0 0
规则
您的答案应该由一个正则表达式组成,没有任何其他代码(可选地,使您的解决方案起作用所需的正则表达式修饰符列表除外)。您不得使用语言的正则表达式风格的功能来允许您以托管语言调用代码(例如Perl的e修饰符)。
请在回答中指定您的正则表达式风格。
这是正则表达式高尔夫,因此以字节为单位的最短正则表达式获胜。如果您的语言需要使用分隔符(通常是/.../)来表示正则表达式,请不要计算分隔符本身。如果您的解决方案需要修饰符,请为每个修饰符添加一个字节。
我有理由相信基于Martin Ender的解决方案可以使用regex查找和递增整数。
/e
修饰符仅适用于替代,不是运行外部代码的唯一方法。同样,这也完全取消了Perl 6的资格,因为正则表达式只是带有其他语法的方法。(原因是它使正则表达式更易于读写)因此,就像您只放入Perl 6代码一样,不需要(或不包含)旧式正则表达式所需的所有功能。(大概意思是不可能做到这一点的挑战,如果你只是限制在特定的正则表达式代码)/^(\d+)**3%' '$ <?{$0[2]==[+] $0[0,1]}>/
或/^(\d+)' '(\d+)' '(\d+)$ <?{$2==$0+$1}>/
或/^(\d+)' '(\d+){}" {$0+$1}"$/