Regex Golf网址:https://alf.nu/RegexGolf
Regex Golf通关解答:Regex Golf通关解答-CSDN博客
解谜篇,收的是我开始完全看不出规律的题目。通过查阅资料,弄清题目意图的过程,宛如解谜一般。
Tic-tac-toe–Don't forget the horizontals.
Tic-tac-toe就是我们小时候玩的井字棋。如果不知道这个信息,那估计看这道题目真的是一头雾水。但知道这个信息之后,看这个题目就比较清晰了:每三个字符代表井字棋的一行,三行三列。我们需要匹配代表井字棋游戏一方胜出的局面的字符串。最简单的方法就是把各种获胜的局面都匹配出来,包括横三连:(\w)\1\1,纵三连:(\w)....\1....\1,两条对角线:(\w)...\1...\1和(\w)..\1..\1,将这四种情况连接起来,可以得到答案:(\w)\1\1|(\w)..\2..\2|(\w)...\3...\3|(\w)....\4....\4。对这个答案进行合并优化,得到:(\w)(\1|..(\1|.(\1|.\1.).)..)\1,31个字符。最少字符答案为24个字符,没想出来。
Latin squares–No mathematics; just logic and reasoning.
“拉丁方阵(英语:Latin square)是一种 n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次”,以上信息是我百度的,我承认一开始确实没有能总结出来这个规律。题目得出一个正确的解答不算太难,首先是不能在同一列上有相同的字母:^(?!.*(\w)(.{5})*....\1),其次是四个字母重复出现:(.)(.)(.)(.)( (\1|\2|\3|\4){4}){3},合在一起就可以得到答案:^(?!.*(\w)(.{5})*....\1)(.)(.)(.)(.)( (\3|\4|\5|\6){4}){3},58个字符。后面我又查到了一个别人写的41字符的答案:((.)(?!(.{5})*.{4}\2)(?=\S* \S*\2)| ){15},这个解答思路类似于“接龙篇”Matryoshka一题的解题思路,通过零宽断言来匹配特性,然后消耗字符来更新位置,以达到让每个字符都满足特定条件来进行匹配,字符利用效率确实比我的答案高多了。当然,最少31字符的答案,毫无思路……
标签:Regex,11,Golf,..,字符,....,...,解谜 From: https://blog.csdn.net/lc19890709/article/details/143438408