Regex Golf网址:https://alf.nu/RegexGolf
Regex Golf通关解答:Regex Golf通关解答-优快云博客
Sum–
这道题我的思路依然是利用零宽断言去排除那些不可能发生的情况。我主要依据有两个:(1)x0 + y0 = z0,由于不存在进位,所以z的值是可以由x和y确定的,即x != y时,z = 1,x = y时z = 2;(2)不会出现10 + 11 = 11,10 + 11 = 00, 00 + 01 = 11, 00 + 01 = 00 这四种情况。接下来就是在用例允许的范围内做减法了,我的整个解答优化过程如下:
^(?!\d*00.{17}(.)0.{17}(?!\1))(?!\d*10.{17}(.)0.{17}\2)(?!\d*00.{17}0.{18}11)(?!.*(.)(.).{17}\3(?!\4)..{17}00)
^(?!.*(\d)[0 ].{17}\1[0 ].{17}1)(?!.*(\d)[0 ].{17}(?!\2).[0 ].{17}0)(?!.*(.)(.).{17}\3(?!\4)..{17}(00|11))
^(?!.*(.)[0 ].{17}\1[0 ].{17}1)(?!.*(.)[0 ].{17}(?!\2).[0 ].{17}0)(?!.*(.)(.).{17}\3(?!\4)..{17}(00|11))
^(?!.*(.)[0 ].{17}\1[0 ].{17}1)(?!.*(.)(.).{17}\2(?!\3)..{17}(00|11))
^(?!.*(.)[0 ].{17}\1[0 ].{17}1)(?!.*(.)(.).{17}\2(?!\3)..{17}(.)\4)
^(?!.*(.0).{17}\1.{17}1)(?!.*(.)(.).{17}\2(?!\3)..{17}(.)\4)
^(?!.*(.0).{17}\1.{17}1)(?!.*(.)(.).{17}\2(?!\3).{18}(.)\4)
最后的答案共59个字符,距离最少字符52还是有些差距。
排行榜的评论区里,有老哥提到了“robust solution”,应该是指能正确匹配所有16位二进制加法等式的答案,我暂时还没有思路。