Created
December 23, 2020 01:01
-
-
Save sarim/65be0d8aa9544c73545c91bc519e8179 to your computer and use it in GitHub Desktop.
Adventofcode 2020.19
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bufio" | |
"fmt" | |
"os" | |
"regexp" | |
"strconv" | |
"strings" | |
"time" | |
) | |
type SubRule struct { | |
TargetedRules []*Rule | |
} | |
type Rule struct { | |
InputText string | |
Number int | |
Character rune | |
AlternateRuleSet []*SubRule | |
} | |
func handleError(err error) { | |
if err != nil { | |
panic(err) | |
} | |
} | |
func parseRules(rulesMap map[int]*Rule) { | |
ruleRe := regexp.MustCompile(`((?: [\d|]+)+)|(?: "([ab])")`) | |
for i := range rulesMap { | |
matches := ruleRe.FindStringSubmatch(rulesMap[i].InputText) | |
if matches[2] == "" { | |
alternateRuleSetString := strings.Split(matches[1], "|") | |
for _, subRulesString := range alternateRuleSetString { | |
targetedRulesString := strings.Split(strings.TrimSpace(subRulesString), " ") | |
subRule := &SubRule{} | |
rulesMap[i].AlternateRuleSet = append(rulesMap[i].AlternateRuleSet, subRule) | |
for _, linkedRuleString := range targetedRulesString { | |
ruleNumber, err := strconv.Atoi(linkedRuleString) | |
handleError(err) | |
subRule.TargetedRules = append(subRule.TargetedRules, rulesMap[ruleNumber]) | |
} | |
} | |
} else { | |
rulesMap[i].Character = []rune(matches[2])[0] | |
} | |
} | |
} | |
func traverseRule(rule *Rule, msg []rune, pos *int) bool { | |
if rule.Character != 0 { | |
if rule.Character == msg[*pos] { | |
*pos++ // matched a character, advance msg pos | |
return true | |
} | |
return false | |
} | |
for _, subRule := range rule.AlternateRuleSet { | |
origPos := *pos | |
result := false | |
matchedEnd := false | |
var matchedRule *Rule | |
for _, targetRule := range subRule.TargetedRules { | |
if result = traverseRule(targetRule, msg, pos); result { | |
if *pos == len(msg) { | |
matchedEnd = true | |
matchedRule = targetRule | |
break | |
} | |
} else { | |
// partial match of rule, | |
// so rewind msg pos before trying alternate rule | |
*pos = origPos | |
break | |
} | |
} | |
if result { | |
// whole msg is matched, but check if we also reached end of rule set. | |
lastRule := subRule.TargetedRules[len(subRule.TargetedRules)-1] | |
if matchedEnd && rule != matchedRule { | |
return lastRule == matchedRule | |
} | |
return true | |
} | |
} | |
return false | |
} | |
func executeMatch(rule *Rule, msg []rune) bool { | |
matched := false | |
pos := 0 | |
matched = traverseRule(rule, msg, &pos) | |
// we reached end of rule set, but check if we matched whole msg. | |
return matched && pos == len(msg) | |
} | |
func main() { | |
var t0, t1, t2 time.Time | |
t0 = time.Now() | |
lineRe := regexp.MustCompile(`([\d]+):([\dab"| ]+)`) | |
rulesMap := make(map[int]*Rule) | |
matchedCount := 0 | |
msgCount := 0 | |
file, err := os.Open("MonsterMessages.input.txt") | |
handleError(err) | |
scanner := bufio.NewScanner(file) | |
scanner.Split(bufio.ScanLines) | |
scanningRules := true | |
for scanner.Scan() { | |
lineText := scanner.Text() | |
if scanningRules && lineText == "" { | |
scanningRules = false | |
parseRules(rulesMap) | |
t1 = time.Now() | |
fmt.Printf("parse time: %v\n", t1.Sub(t0)) | |
continue | |
} | |
if scanningRules { | |
matches := lineRe.FindStringSubmatch(lineText) | |
ruleNumber, err := strconv.Atoi(matches[1]) | |
handleError(err) | |
inputText := matches[2] | |
if ruleNumber == 8 { | |
inputText = " 42 | 42 8" | |
} else if ruleNumber == 11 { | |
inputText = " 42 31 | 42 11 31" | |
} | |
rulesMap[ruleNumber] = &Rule{InputText: inputText, Number: ruleNumber} | |
} else { | |
msgCount++ | |
if executeMatch(rulesMap[0], []rune(lineText)) { | |
matchedCount++ | |
} | |
} | |
} | |
t2 = time.Now() | |
fmt.Printf("match time: %v\n", t2.Sub(t1)) | |
fmt.Printf("total time: %v\n", t2.Sub(t0)) | |
fmt.Printf("%d / %d\n", matchedCount, msgCount) | |
file.Close() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
107: 18 | 47 | |
116: 1 18 | 111 47 | |
21: 45 47 | 110 18 | |
20: 2 47 | 76 18 | |
44: 47 47 | 18 107 | |
2: 47 18 | 107 47 | |
113: 51 47 | 35 18 | |
80: 18 22 | 47 44 | |
110: 18 18 | 47 107 | |
1: 22 18 | 112 47 | |
77: 47 7 | 18 113 | |
16: 121 47 | 2 18 | |
66: 91 18 | 58 47 | |
86: 12 18 | 78 47 | |
72: 18 76 | 47 121 | |
46: 47 68 | 18 82 | |
131: 66 18 | 75 47 | |
108: 84 18 | 24 47 | |
27: 22 47 | 110 18 | |
53: 108 18 | 122 47 | |
90: 77 47 | 37 18 | |
6: 18 29 | 47 52 | |
10: 76 18 | 44 47 | |
43: 47 39 | 18 130 | |
106: 18 112 | 47 110 | |
89: 97 47 | 51 18 | |
84: 112 18 | |
91: 74 47 | 110 18 | |
114: 18 47 | 107 18 | |
105: 26 18 | 118 47 | |
18: "b" | |
19: 2 47 | 22 18 | |
15: 34 47 | 2 18 | |
111: 110 47 | 22 18 | |
94: 47 95 | 18 57 | |
34: 107 107 | |
60: 47 114 | 18 121 | |
62: 44 47 | 45 18 | |
50: 38 47 | 103 18 | |
61: 18 44 | 47 110 | |
87: 112 107 | |
8: 42 | |
31: 18 49 | 47 25 | |
57: 18 20 | 47 60 | |
103: 18 67 | 47 40 | |
39: 18 45 | 47 22 | |
128: 112 18 | 13 47 | |
5: 45 47 | 44 18 | |
13: 18 18 | |
3: 47 10 | 18 80 | |
11: 42 31 | |
124: 22 18 | |
88: 18 18 | 47 18 | |
54: 32 18 | 129 47 | |
63: 81 18 | 86 47 | |
49: 18 132 | 47 105 | |
102: 10 18 | 120 47 | |
93: 18 44 | 47 34 | |
65: 107 2 | |
132: 83 47 | 14 18 | |
125: 18 43 | 47 71 | |
109: 47 22 | 18 76 | |
117: 18 112 | 47 22 | |
59: 47 22 | 18 13 | |
75: 18 109 | 47 27 | |
4: 47 90 | 18 69 | |
48: 18 65 | 47 115 | |
24: 18 2 | 47 44 | |
42: 47 50 | 18 4 | |
96: 106 47 | 16 18 | |
101: 111 47 | 91 18 | |
58: 47 76 | 18 73 | |
79: 47 73 | 18 22 | |
12: 47 34 | 18 88 | |
25: 33 47 | 55 18 | |
130: 18 114 | 47 44 | |
83: 126 18 | 102 47 | |
45: 47 18 | |
9: 41 18 | 62 47 | |
78: 112 18 | 45 47 | |
14: 3 47 | 85 18 | |
97: 47 45 | 18 22 | |
22: 18 47 | |
41: 18 22 | 47 112 | |
112: 18 47 | 18 18 | |
68: 21 18 | 19 47 | |
121: 47 47 | 18 18 | |
119: 22 47 | |
129: 47 5 | 18 39 | |
30: 73 18 | 2 47 | |
98: 34 18 | 45 47 | |
40: 18 70 | 47 9 | |
7: 64 47 | 79 18 | |
115: 121 47 | 44 18 | |
32: 19 47 | 30 18 | |
73: 18 47 | 47 18 | |
35: 18 76 | 47 45 | |
95: 93 18 | 72 47 | |
52: 28 47 | 124 18 | |
126: 59 18 | 92 47 | |
26: 104 18 | 89 47 | |
81: 47 98 | 18 127 | |
0: 8 11 | |
64: 112 47 | |
71: 47 119 | 18 117 | |
74: 47 47 | |
82: 47 120 | 18 17 | |
56: 74 47 | 88 18 | |
123: 88 47 | 76 18 | |
33: 6 18 | 63 47 | |
104: 80 18 | 128 47 | |
99: 98 18 | 23 47 | |
38: 94 18 | 53 47 | |
36: 47 110 | 18 74 | |
37: 47 48 | 18 101 | |
70: 61 47 | 87 18 | |
55: 47 54 | 18 131 | |
23: 2 47 | 112 18 | |
122: 10 47 | 64 18 | |
120: 88 18 | 112 47 | |
28: 18 112 | 47 73 | |
51: 47 74 | 18 110 | |
17: 47 88 | 18 22 | |
127: 18 73 | 47 45 | |
69: 125 18 | 46 47 | |
92: 2 47 | 114 18 | |
29: 117 18 | 56 47 | |
67: 18 96 | 47 116 | |
85: 18 36 | 47 15 | |
100: 18 123 | 47 12 | |
47: "a" | |
118: 100 47 | 99 18 | |
76: 47 47 | 47 18 | |
bbbbbbbbbaaaabbaababbabbaaabbbabbbbaaabb | |
babaabbaabbbbaababbaabbabaababba | |
baabbaaabbabbbbaaabababb | |
bbbbababbaabbbabbabaaaaaaabbbbbbabbabbbaabbbbbbbbbaaaaab | |
bbbbbabbbbbbaaabbaaaaaba | |
baabbabbbaabbbabbaabbabbababaaab | |
bbabbbbaabbabaaababbbbbbbbbabaab | |
aaababbaabbaaabbbbbbbabbbaaaabbaabbabbabaababbaa | |
aabbbabbaaaaaaabbbabbaba | |
baabaaaabbbababbbbaabbbb | |
bbbbabababbbbabbbbbbbbba | |
babbaababbbbababaabaababbbabbbbbaabaaabb | |
baabbbabaabbabbbaaaaabba | |
baabbabbbbaabbbabbbaaabb | |
aaaaabbaababaabaabbabbbbbabbabaabbaaabbb | |
babbaabaaabbbbbbbbbbbabbaabbaaabbaaaaabbabbaabaabaaabbbaaabaaabb | |
aaabaaabbaaaaabbabaaaaababbabaaababbaabaabbaaaabaaaabaaaaaaabbaaababbbbb | |
baaababbbaabaaaaaaaaaaaabbababaababaaaaabaaabaaa | |
abaaaaabbbaababababaaaba | |
abbaabbabaaabbabaaaaaabaababbabbbbbbabbaabaabbbb | |
baabbabaaaaabbabbaaaaaabaababaab | |
abbaabbabbaabaaaabbaaabbabbaaababaaaaaaa | |
abaaaaabbbbaabbabbbbbbaaaaaaababbbbbbaaa | |
aabbaaabaaaaaabababaabab | |
bbbabbaaaaabaaaaaabbbbaa | |
abbaaababbaaaabbaabaaabbbaaaabbbbbbbaaaaabbbbabaabaabbab | |
aaaaaaaaaababbabbbabbaba | |
abbaaaaabbbabbbaabbaaabbabbbbaabbabbabbbabaababbbbabaaba | |
babaaaaabaabbaaabbaabaaababababa | |
bababaabbaaaabbabbbabbbabaabbaaaabbaaababbbbbbaaaaababaa | |
aabaabbababbbabaaaaaaaabababaaaababbabaabbaaaaabbbbbbaab | |
baaabbbbaaabbaabaaaaabaaababbaabaaababbabaababbb | |
abaabbbaaabbabbabaaababbbbabbaaaabaaaabb | |
abbaababbaaaaabbbbaaabbb | |
aabbabbabbaaaaaabbbaaabb | |
baabbbabbabbaababbabbbbabaabbbabbbbabbbaabbabbaababbbbbaabbababbaababaab | |
abbaabaabaaabbbbbaaabbabababbabbbaabbabbaaabbaaababbbababbbbbaaa | |
aabbbaabbbbababbbabaabaa | |
baabbaaaabbbaababaabbabbabbbbbaabababaaabaabbbbaaababbbb | |
abbabababbbbbabbababbbaaaaaaabbbaabababb | |
baaabbabbbbaababbbaaaabb | |
aabaaaaaaaaaaabbbabbbabbaaabbbab | |
abbaabbababbbbaabaaaabbaababbabbaaabbbbabbbaaabbbbaaaabb | |
baaabbabbbaabaabbbabbaba | |
abbbbbaaabababbbbbbabbbb | |
aaabbabbbbaabbbabbaaabbb | |
babbbbaaabaaabbaabaaaaabbabbaaab | |
aaabbabaabbaababaabbbbbbbabaaaba | |
baaaaabbababbbbabbbbabbbababaaaa | |
abbaaaabaabbbaabbabbbbab | |
bbbaabbaabaaaaaaababbbbaabbaaaaabbaaabbabbabbbaa | |
baabbbabaabaabbaababbabbbbaaaaaaaabbbaabbbabbbaa | |
babaabbabbbbaabaabababbbaabaababbbbaabbb | |
aabbbabbbaaaaaababbaaaaaaabbaaabbabbabbaaabbaaba | |
aaabababababbbabbbaabaabaaababbaabbbaabbbbaaaaba | |
aaabaaababbaababbbbabbab | |
baaabbabbaabaaabaaaababbabbbabba | |
abbbabaaaabbbaaaabaabbabbbaabbbbaaabaabb | |
abbbbabbabbaababbbbbbbaabaaabbbbabaabababbbaaaabaabbaaba | |
baabbababbbabaaaaabbbaab | |
aaaabbaabbaabbbbaabbaaaabbabbabaabaaababbaabaabababbaabbbabbbaabaabbbabbbabaaabb | |
abaaaaabbabbaaaabbabbbaa | |
baaabbbbababbbaaaababbabbabbaababbabbbabbbbbaaaa | |
aaaababbabaaaaabbbaabaabbababbbbaabbaaabbbbaaabbbabbbaaaababbaba | |
abbaaabbbbbbaaabaaaaaababbbbbaaa | |
aaaaabbababbaabaabaaaaaababbbaabaaaabbaa | |
bababaabbbbbaaababbaaaaaaabbbbabaaaaabbbaabbbaaa | |
bbaabbaaaabaaabbaabbaaaabbabaaaabaabbbab | |
aabbaaabbaabaaaaaaaababbbabaabbaaaababbb | |
abbbaabaabbaabbbaaaababa | |
abbaaabbaabaaaabaababbbb | |
baabababbbbaaabaaabbabababbbabba | |
abaaabbaaaabbabaabbaaabbaaaaaaaaabbbaababaababbaaabaaaaaabbbabaa | |
abbbbbabaabbaaabaaaaaabb | |
abbaabbaabbbbaabbbaabaababbbbbaaababbbbb | |
aaabbababaaabbabbbaaabbb | |
baaababaababaabbbbbaabaa | |
bbbaababbbaaabbaaaaabbabbabbbbab | |
bbaabaaaaaababbabbaaaaab | |
aaabaaabbabbabbabbaaaaba | |
babbabababbbbabbaabbbaba | |
ababaabbbaabbaababbaabababbbabbbabbbbaabbababaaababbbabbbbbabbbb | |
abbbbabbaababbababbbbbaaabababbbaabaaababbbaaabb | |
babaabbbababaabaabaaabbbbaabbbaa | |
bbbbabbbbbababaabbbbaaabbaabababbbbbabaabaaaaaaa | |
aabbabaaaaabaaabaaaaabab | |
abababaaabbabaaabbaaabbababbbbaaaaaababbbabbbaaa | |
abbaaaaabbabbbbaaabaabbabbaabaababbaaabaaababaaa | |
aabbbabbababaabbababaabbaaabbbab | |
baaaaabbbbbbbbaaabbbbbabaabaababaaaabaab | |
abaaaaaaaaabbababbabababaabbbabbbbaabbababbbaaab | |
baabaaaaabbaaaabbbbabaaabbababababbbbbba | |
baabaaababababaaaabbabaaaabaabababaaaabb | |
bbaaabbaaaabaaababbbbabbaababaaa | |
babaabbaabbbbaabbbaaabbabbaabbbbbabbbaaa | |
bbaaaaaaabbaaaaaababbaaaababbbabbbbaaaabbaabababababbabbbbbbaabbaaababbbbbbbbbab | |
aabaababbabbaaaaabaaaaabbababbaa | |
aaabbaabaabaabaabbbaababaabaabaabbaabaabbaaabbaa | |
abaaabbabbbabbaabbbbbabbabaababbababbaaa | |
bbabaaaaaababababbababba | |
aaabbabbbabbbbbbabbaabbbbbbaababbaabaaabababbbbbabbabbaa | |
aabbbbabbabbabaabababbaa | |
aabaaabaaaabaaaabbabbbbaaaabbbbb | |
aaaabbabbbabbbbbbaaababaaaaabbabaaaaabab | |
baabbbabaaabbabbbbababba | |
bbbabbbaabbaabaabbabababbbbababbabaaabbababbabbbabbbaaaabbaaababbaababaa | |
abbaabbbbaaabbabbaaaaaaa | |
aabaaabaaaaaaaaaaaaaaabb | |
babbaaaabbabaaaaaaaaabbaabbbbaabbbabbbbbbbbaaaaa | |
aabbaabbbaaaaabbabbbbbba | |
baaaaabbaaabaaaaabaabbaa | |
bbaabaabbaabbbabbabbbaabbbabbbaababaabab | |
aaabbabababaabbabaaababaaaabbabbbbabbaabbabbbbba | |
bbaaabbabaaababbabaaaaaabaabbbaa | |
bbbbbabbabbbbbabbbbababa | |
abaabbbabaabbabababaabaa | |
babbabaaaaaababbbaaaaabbababbabbbbbbbabbbbbbabaa | |
aaaababbabbbbbaabbbbaaabbaaabbbbaabbbbbababbaabababbbaaa | |
babaaaaaabbbabbbaabaabbabaaabbbbbabababbbaabbbaabbaabbaa | |
ababbaabbbbbbabbbabaaabbabaabaabbababbbbabbbbaab | |
abaaaaaaaaaaaabaabbbbaabbababbbbbaaabbaa | |
bbbaabbabbbabbaaaaabbabbbaaaabbaaabaabbb | |
aaaaaaabaaabaaabaabbaaabbbabbbabaaaabaaababbbaaa | |
aabbbbababbaaababababaabaababbba | |
bbabbbbbbabaabbbbabbababaaaaabaabbaaabaabbbabbabababbaaa | |
babaabbaabbabbabbabbabaaabbabaab | |
bbbabbbaabbaaabbaabaaabaaababbaa | |
abbbabbbababababbaaabbab | |
abbaaaaababbababaaaaaabaaabaaabb | |
aaaaaabaabbaaabaaabaabbabbabbaab | |
aabababaaabaaababaabaabbaababaabbaabaaba | |
bbababaabaabababaabaaaabbaaabaab | |
aabbbbabbaaabababbabaabb | |
bbbbbbaaaabbbbabbabaaaababbbbbba | |
ababbbbabaabaaaaababbbbaabbaaaabbbabbaaa | |
abbaaabbaabbaabbaaaababbbaabaabbaabbbbbabababaaabbaaababbbabaaab | |
aaaaaaabbaaaaabbabaabaabbbbbbbabbbbbaaaabbbabbbb | |
babbabbaaaaaaaaabbbaaabb | |
aaabaaaaaaaaaabaabbabaaabaaababbbbbabaaaabbbaaba | |
aabbaaabbaabbabbbbabbaaa | |
aabbbaabaabbbbbaabbaaababbaabbbabbbabbbb | |
bbbabbbabbababababababbbabbababb | |
aaaaaaabaabbabaaababbbbb | |
bbabababbbbabbaabaaabbababbaaaaabbaaabaa | |
bbabbbbaaabbaabbabaabbaa | |
aaabbaabaabaabbaabbaababaabbbaabaabaabbababbabababaaabbbbbabaababaaaababbbbbbbbabababbba | |
abababaaabbaabbabbbbaaaa | |
abaabbbaaabbbabaabababbbabaaaaabbaaaaabaaabbabbbbaaaaaabbabbabab | |
baabababaabbaabbbbababba | |
abbaaabbabbaabaabbabbaab | |
baabbaababaabaababaaabab | |
abaabaaaaaababbabbabbaba | |
baaabbbbbbbbbbababaabbab | |
babaaabbaabaabbaabbabababababbba | |
aaababbaaabaabaabbbabbbababbbaabaabbbaaa | |
aabbaaaaababbbbaababbaaa | |
babaaaabbbabbbbababbbabb | |
bbbaabbabbbaabbabbabbbaa | |
babaaaaaabbaabbabbaabaabbbbbbabbbbaaabbabababaaaaaabbbbb | |
babbaaaabbbbababbaabbbabbaaabaabbaabbbba | |
bbbbbbaabaaababaababbaabababbbab | |
abbabbbbaabbbbaaabbbaabbbbabbabb | |
bbbabaaaaabbaaabbabababb | |
abbaabababbbbaababbabbabbabbaaaaaaaaabaaaaaabaab | |
aabbabaabbababaaaaabbababbaabaaabaaaaaaa | |
bbbbaabbbbbababaabbbabaaaabababb | |
baabbabbaabaaabaaabaaabababaabab | |
baabaaaaaabbaaabbbabababbabbbbbbbbbbaaaa | |
aaaaaaababaabbbabbaabbbaaaaabaababbbaaababbbaabaabbbbbbbababbababaabbaab | |
abbabbbbbbbbbabbababaaaa | |
babbbaabaabbbbabbaabbaabbbbabbaabbabbaab | |
ababaabbbbaabaabaaabbabbbaaaaaaa | |
baaaaaabaabbaaababbbbabbabaaababbbaaaaba | |
bbbbabbaaabbbaabbaaaabab | |
ababbbaaabbabbabbbbabbab | |
abababaaaaabbabbbbabaaba | |
aaaaabbabbabbbababbbabba | |
aabbbbbabbabababaabbaaabaaaaabbbbbbaaaab | |
bbbabaaabbbabbbaaaabbababbbbbaba | |
aaabaaababbbaababaabbbaa | |
aaaababbbbbbbbabaabbaabbabbbabbbbababaaabbbaabbbbabbbbab | |
aabaabbabaabababbabaabbaaaaaabab | |
abbaabababaabaaababbbbaaaabbaaba | |
bbabababbaabaabbababbaaa | |
babaaaabbaabababbbbaabbaaaabaaabbababbaaaaaabbaabbbaaaaa | |
bbbabbbababbbbbbbaaaabaa | |
bbbbabbaababbbaabbabbbbabbabaaaaaabaababababaababbaababbbbbbaaaa | |
baabbbbaaaabbbabababbaba | |
aabbbbabbbbbababbbababbbababbaaaabbbbaaa | |
aabbaaabbbabababbbbabbbabaabbaaababbaaababababba | |
baabaabbbaabaaababbbbaabbaaaaababababbbabaaabbbbbaababababaaaaaa | |
bababbbbaabaaaababbaaabbbabaabab | |
babaabbbaaaabbbaaaaabbbbabbbaaaabbabbaba | |
abaaaaabbbbabbaabbbbbbabaaabaabb | |
ababaababbaabaabababbaba | |
baabaaaabaabbabbbbabaaaababbaaab | |
aaaabbbabbbbbbabbbabbabb | |
bbbbbbabbabbaaaaabaaabbabaaababbaabbbaaa | |
bbbbbabbbbbaababbabababb | |
aaabbaababababaababaaabbabaaabbb | |
baabaabbaaaaabbabaabaaaaabaaabab | |
bbbbbbababbbbaababbabbabbbbaabaa | |
abaabbabbabaababbbbbbbbabbbbbbaaabbbaabaabbbbbbbbbbbaaab | |
abaabababaabbabbbbbbabbabaaabaab | |
bbabbbababbaabbaababbbbaabbaabbbbbaabaabbabaababbbababbbbaababaa | |
abbaaaaaaaaabbbaabbabaaaabbaaaaaababbabaaaaabaabaabababb | |
aaaaabbaaaabbbbaaaabbbbaaaababbababbbaabbaababbababaaabaaabaaabbbbaaaaab | |
aabaabbaaabaaabaaabababb | |
aaabbabbabaaaaabbbbbababaaaabaaa | |
baababababbbbabbabbabaaaaabaaabbaaababbb | |
ababbbbaabbaabbaabbbbaaa | |
aaaabbabbbabaaaaaabaabbb | |
bbbbabbaaaaaabbabbbababa | |
aaaaaabbbabaaababaaabbaaabaabbbabaaababbbbabaabaaababaabaaaaaaaaabbbaaaababaabaa | |
baabbbababbbbbaabaabaaaaaaabaabb | |
abbabbabbbbbabbbaaaaabbabaaabbaa | |
baabaaababaabaabbaabbabbaaaaaaababbabaaaaababbba | |
baaabbabaaaaabaaabbabbbaaababbba | |
aabbaaababaabaaababbaabaaababbabbabbbbabbbaaaabb | |
baabbaaabaabbaababbbbaba | |
aaaaabaabbaaabbaaabaaaabbaabbaaaaabaaabb | |
bbaababaabaaabbababababb | |
bbabbabbbbaaaaaaaaaabaabbbaaabaabbabbabbbbbbabbbabbbaaaabaababbbbabbbbabababbaab | |
aaabbbbabaabaaaaaaabbbab | |
baabbbabbbbabbaaabaaabab | |
bbaaabbabaabababaabbabbabbaaabaa | |
ababbbaaababaabbbabaaaabbababbbbbaaaaaba | |
baabbaaaabaababaaabababb | |
aababbabbbababababbbbbaabaabbaaaaaaabaaabbaaaaba | |
aaaaaaabbaabaaaaababababbabbaaabaaabaaba | |
abbaabbbaabbbabbaaabbaaa | |
baabbaabbbbababbbaaaaabbbbabbabb | |
aaaaabbababbaaaaabaaabbaabaabbbabaababaa | |
aabbabbbbbbbabbbbbbbbbba | |
abababbbaaaaaaabaabbabbaabbbbaaa | |
abababbbaabaaababbaababaabbabbaa | |
baabbaabaaaaaaaaaaabaaba | |
ababbbaabbbbababbbaaaaab | |
baaabbabaaabaaabaaaabbbbbaaaaaba | |
bbaaabbabbabaaaabbaaaaaaababaabbbabaaaba | |
abaabbbaabaaabaaaabbbbbbbaaabaabaababbba | |
bbbbabaabbbbbaababaaaaabaaabbabbbabababbbaabbaaa | |
abaabaabaaaaabaababaabbbbbaabaaaaaababbb | |
aabbbbbaaabbbbabaabaaababbbbbbabbbbaabbbbaabbbaa | |
abaabbbaabaaaaaaaaaabaaa | |
baabbbababbbaababbabaaba | |
babbbaaaaabbbababbababbabbababab | |
baaabbababbbabbbabbbbbba | |
abbaaaaaabaabaabaaabbbbaabbababbababbaaa | |
abbaaaabbaaabbababbaababaaaababbbabbaabb | |
baabaaabaaabaaabbaabababbaabaaba | |
ababbbbaabbaaabbbbaababaaaaabbbbabbababb | |
baabbabbbbabbbbabaabbababbbbababbaaaaaababababba | |
abaabaaaabbaaaababbaaaabababbbaaababbabaabaabababbbbbaab | |
abbbbbabbaaaaaabbabaaaaabaaabbbbbaabababaaababaaabbbabab | |
baabaaabbabbabababbaaabbbabbabbabbbbbabbbabbbaaabaaaabab | |
babbabaaaaaabbbbabaaaaabaabbbabbabbaaaaaaababbba | |
babbbabaabbbaaaababaabaa | |
aaabbabbbabbabaaabbbbabbabbababbabbbabba | |
abbaaaabaaabaaabbaabbabaaaababbabaaabbbbbababbaaabbabaab | |
aabbabaabaaaaabbaabbbaabbabaabab | |
baaaaabbbbaaaaaaabbbbbabbbbbbbbbaababbbbbbbaabaa | |
bbababaaabbaabaabbabababbabaabbbabbaaaaaabbbabbb | |
aaaabbabbbaabaabaaaaaaaaabbbbbaaaaabbbababbbaaaa | |
abbabbbbbbbbabababaabbab | |
babaabbabbbbabbabaaabbbbbbababbaaaabbbabbabaaabaabbabaab | |
bbababaaaabbbabbbbababbb | |
baabbbababbaabaabbbbababbababbbbabbbabab | |
baabaaaabbbbbbababbabbaa | |
babaaaaaaabbbaabbbbbbbaabaabaaabaaaaabbbabaaabbb | |
aaababbaaaaabbbbbbabbbba | |
aabbbaabbbabaaaaaabababaabbbabbbbbaaabaabbbaaaba | |
abbbabbbbabaaabbbbbbababababbbbb | |
abbbbaabaaaabbbaaaabbbbaaaaaabab | |
ababbbbaaabaaabaababaaab | |
aaaaaaabbbbaababbaabababaabababaabbbbabb | |
aabaaaabbaabaaabbaaaaaabbababbbaababaaaa | |
aabbabbabaaaaabbaaabbbab | |
bbbbbabbbbbbbbabbbabbaba | |
aabaababaaaabbabbbbaabbaabaaabaabbabababbbaabbbbbaaaabaa | |
babbabbabbbaababaabbbbbbabbaaabaabbabbbaabbbbbbb | |
aabbaaabaababbababaaabab | |
abaaabaaaababbabbbbbbbabbbaaaaaaabbabbaaaaabbbbb | |
babbbbbbbbaabaaabbbbbaba | |
aababbaaaaabababbababbbaabbbabaa | |
abbbbbaaabbbbaabaaaabbbbababbbabbbaabbaa | |
aabbabbaaabaaabaaaaabbabaabbaabbabbbbbabbaabbbba | |
baabbbabbabbaababbbbabbb | |
aaaaaaabaabaaaaabbbbbbbbaaabbabbbabaabababababbb | |
bbabbbabbabaaaabbaabbbabaaaabbbabaabbabbbbabbabbabbbaabbbaabaabaaababaaa | |
bbaabaabaabbaaaaabaabaaaaabaabbbbababbaa | |
bbbababbabaaaaabbbbabbab | |
abbbabbbaabbbaabbbbbabbababaaabbabbbbbaabbaabbbbabbababbabbbbbbb | |
babbabbaaababbabbbbabbbaaaabaaababbaabaaabababab | |
bbabaaaabbbabbbaababbabbaababbaa | |
abbbbabbabbaaaaaaaababaa | |
bbbababbabbaaabbaabbabbbbbbabbbbaaaabbaa | |
abbabbbbbbbaababbaabaabbbbabababbaaaaaaabbbbbababbabaabb | |
aaaaaababaaabbaaabaaaabb | |
babbababbabbbaaababbbabbbbbabaab | |
aaabaaabbabaabbbbababaabaabbbbbaaabababb | |
aabbbbbaabbbbabbbbbbababaaaaabbaabbabbabbaaabbbbbbabbabb | |
abbabaaababaabbaaabbaaabbaaaababbbbbbbba | |
bbbbbbabababababbbabbbabbaaaaabbabaaaabaabaaaababababbaa | |
abbaabaaaabbabbbabaababaababaabbbbbbbaba | |
abbabbbbbabbaababbbaabaa | |
abbaababbababaabbbaaabbaababbbaaabaaabaabbaaabbb | |
bababaabaaaababbbbaaaaaaaaaaabab | |
bbbbabbbbaabbabababbabbb | |
abbaaaabaaaaaabaabaaabaaabbbbaaabbabaaba | |
bababbbbaaaaaababaabbabbbbaabbab | |
abbaaabbababaabaabaabbab | |
aabaaaabaabbabbabbbababa | |
aaaaabbabbbbbbaaaaabbabaaaaaaaaaabbbbabbaabbabbabbabbbaaaaabaabb | |
bbbbbaaaabababbababbbaabbabbbbaaaabaabaabaabaaababbaabababbabbbb | |
abaabaabaabbbbbbaaaaabab | |
aabbabaaababababbbbaabbaabbbbbaabbabbaabaabaaabbbaabbbaa | |
abaaaaaaabbaababbbbbbabbbbaabbab | |
babbabaabaaabbbbabbabbaa | |
aabaaaabababaabaaabbaabbabbbabababbbbbbb | |
aabbaaaaaaabaaaaabbbbabbbaabbbababbaaababbaaababbbaabbbb | |
aaabbbbabbbbbbbbbbaaabab | |
aabbbabbbaabaabbaaaaaababbabbbbbbbbaabbb | |
bbbababbbababaabaabababb | |
aabaabaaaaaabbabbaabbaabaaababab | |
babbbaababaaabbaabbaaabbbbbababa | |
baabbaabbbaaaaaaaaaabbabbabbbaabbabaaabbbbaabbbbbbbaabaaaabaaabbabbabbaa | |
abbaababbabaaaaababbbaba | |
bbabababaaaaabaababaaaba | |
aaaaaababaaaaabbaabbaaabaaaaababababbaba | |
babbbbbbaabbaaaabbbbaabb | |
ababaabbbbaabbbaababbbbb | |
bbbabbbaaaabbaabbabbbbaa | |
aabababaabbaaabbabaaaaba | |
baabaaabaabbabbabbbbbaaa | |
bbbbbbbbbbbabbaabbabbbbabaabbaab | |
babbaabaaabaabaaabaabbbabbabbbaa | |
ababbbbaaaaaabbaabbaaaabbbaababaabbabbabbbbabbabaaaaababbaaabaab | |
aaaabbabbaaabbabababababbaababaa | |
aaabaaabbabbaaaaaaabaaaabbbbbbbaaaabaabababbbabbabaaaababbbbabaa | |
babaaaaaabbaabbbbbababaababababb | |
bbabbbabbbaabaaaabaaabbabbbbbbba | |
abaabaaaaabaabaaababaabaababbabbbbababbb | |
bbaabababbbaababaaabbbbaabaaaaaaabaaabbb | |
aabaabbaabbbbbaabaaaaaabbaabbababbaaabbaaabbabab | |
baabaabbaaaaaaabbaaaabab | |
baaabbababbabbbbaabbabab | |
aabbbbbbbaabbababaabababbabababbababbaaa | |
bbabbbbbbaabbabbabaaaaaabbbbaabb | |
aabbaaaaaabbaaaaaababbbb | |
bbbbabbababbabaaababbbbaabaaaaba | |
bbbbbbaaababaabaabbbbaababbbbbabbababbaa | |
aaaabbbaaababababbbaaabaabaaabbbbabaaaabaabbbaaa | |
bbabbbabbbbbbbbbababaabaabbbabaabbaababb | |
aababababbabaaaaababaaaa | |
babbaabbbaaaababbbaabaaababbabaaaabaabaaabbaabbabbabbbbbabbbbbab | |
aaabbabbaaaaabbaaabbbaabaaabaabb | |
abbbaababbbababbaabbbbbbababbbab | |
bbbabaabbaaaaaabbbbbbaababbaaabaabbabbbbaaaabbaa | |
aaabaaabababbaabababaaab | |
bbbbaabaaabbbaabaababbabaabaaaabaaaabbaaaabaaabb | |
aaaaaaaababaaaaababbbaabaaaaabbababbbbba | |
abbababbbbbaaaababbaaababaaabaababbabaaabbbbbabaababbabbaaabbabaabaabaab | |
aaabaaaabbabaaaaababaabaabbaaaaaaababbabbababaaa | |
baabbabbabababababbabbbbbabbabbb | |
abaaabbaabbbaababbbbaaabbbbbbabbaabaababbbbaaaba | |
ababbaabaabbabbababaaaabbaaaabbabbaabaababbbaabbbabbbbabbbbbaabb | |
baabbbabaabaabbaabbbbaaa | |
abababaaaaabaaaabbbbbabbbbaababb | |
ababababbaaabbabababaabbabbaabbbbaaabbababbbbbbb | |
abaaabbabbaabbbabbaabababbaaabbb | |
babbabaabaaababababbbbaabaaaaaabababbbaabaabaaba | |
babaaaaaababaabbabaabaabababaabbbbbbabbbaabbaababaababbaaababbbbbbbababa | |
baabaabbaabaaabaaabbaabbabbabbabbbaaaaaaabbbabab | |
bbbaabbababbaaaabbaaabbb | |
aabaabaabbbbaaababbabaaaababbabbbbbabbbaabaaabbbbbaaabbbaababaab | |
aaababbbbaababbbbabbaabbabbabaababaababb | |
bbababaabbbbabbaaabbabbbababababaabbaaabababaaaa | |
bababaababbaaabbaaaabbaa | |
abbbaabaaabaabbbaabbbababbbbabbaabaabaaaaabbbabaaaaaabbb | |
aabaabbabbabbbbbbbaaaaab | |
bbbabbabbbbaabbbabbbabab | |
bbaaabbaabaaaaaabbaaabbb | |
aaaaabaabbabaaaababbbabb | |
aaaaaaaaabbabbbbbbabbbbbaababbaa | |
bbbbbbabbbbbabbbabaaabab | |
abaabbbaabaababaaaaaaaababaaaababbbbaaaa | |
babbbaabbabaaabbbaabbaabbbbabaaaaaabaaaabbbbababbbaabbbbbbbbbaab | |
aabbbaabaaaabbbbaaababbabababaabbbbbbbbbbbbababbbbbbaaaaabaaabbbaababaaabbaaaaabbbbaabaa | |
aaaababbaabbabaaabbabbbaaabbaabbbbabbbbaabbabbaa | |
bbaabbaabbbaaaaaaabaaabb | |
babaabbbababaabaabaaaaaaababbabbababaabbabbbbaba | |
aaabbabababaaaaabbabaaaaaaaaaaabbbbbaabaaaabbbabbbbbbaab | |
aaaaaaaaababbaabaababbaa | |
bbabaaaabbaaaaaaaabbbbbbaabaaaaa | |
abbabaaaabababaabaabababbaaabaab | |
abababbbaababbabbbbbbbbbabbbbabbaababbabbbaabbabbbabbbaabababbab | |
babbbbaaabaabbbaaaabbaaa | |
bbbbbbaabbaabaaaabbaaabbbbbabbbbbbbabaab | |
babbaabaabbabbabbaababaa | |
abbaabbabaabbaaaabaaaabb | |
babaaaabbabbbbbbaaaabbaabbbabbababbbbaba |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
parse time: 422.3µs | |
match time: 1.4647ms | |
total time: 1.887ms | |
350 / 402 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment