Terwijl je de lijst met berichten aan het bekijken bent, besef je plots dat de regels niet helemaal kloppen. Om dit euvel op te lossen vervang je regels 8: 42 en 11: 42 31 door de volgende regels:

8: 42 | 42 8
11: 42 31 | 42 11 31

Deze kleine wijziging heeft een grote impact: nu zitten er wel lussen in de regels en matchen ze theoretisch gezien een lijst met berichten die oneindig lang is. Je moet bepalen hoe deze wijzigingen een invloed hebben op de berichten die geldig zijn.

Gelukkig blijven de meeste regels ongewijzigd door de aanpassing die je gedaan hebt. Het kan helpen om te beginnen met kijken naar welke regels altijd matchen met dezelfde berichten en hoe die regels (vooral regels 42 en 31) gebruikt worden door de nieuwe versies van regels 8 en 11.

(Denk eraan: je moet enkel de regels gebruiken die je gekregen hebt. Een oplossing uitwerken die elke mogelijke combinatie van regels aankan, zou aanzienlijk moeilijker1 zijn.)

Bijvoorbeeld:

42: 9 14 | 10 1
9: 14 27 | 1 26
10: 23 14 | 28 1
1: "a"
11: 42 31
5: 1 14 | 15 1
19: 14 1 | 14 14
12: 24 14 | 19 1
16: 15 1 | 14 14
31: 14 17 | 1 13
6: 14 14 | 1 14
2: 1 24 | 14 4
0: 8 11
13: 14 3 | 1 12
15: 1 | 14
17: 14 2 | 1 7
23: 25 1 | 22 14
28: 16 1
4: 1 1
20: 14 14 | 1 15
3: 5 14 | 16 1
27: 1 6 | 14 18
14: "b"
21: 14 1 | 1 14
25: 1 1 | 1 14
22: 14 14
8: 42
26: 14 22 | 1 20
18: 15 15
7: 14 5 | 1 21
24: 14 1

abbbbbabbbaaaababbaabbbbabababbbabbbbbbabaaaa
bbabbbbaabaabba
babbbbaabbbbbabbbbbbaabaaabaaa
aaabbbbbbaaaabaababaabababbabaaabbababababaaa
bbbbbbbaaaabbbbaaabbabaaa
bbbababbbbaaaaaaaabbababaaababaabab
ababaaaaaabaaab
ababaaaaabbbaba
baabbaaaabbaaaababbaababb
abbbbabbbbaaaababbbbbbaaaababb
aaaaabbaabaaaaababaa
aaaabbaaaabbaaa
aaaabbaabbaaaaaaabbbabbbaaabbaabaaa
babaaabbbaaabaababbaabababaaab
aabbbbbaabbbaaaaaabbbbbababaaaaabbaaabba

Zonder de regels 8 en 11 aan te passen, matchen er slechts drie berichten met deze regels: bbabbbbaabaabba, ababaaaaaabaaab, and ababaaaaabbbaba.

Na aanpassing van regels 8 en 11 matchen er in totaal echter 12 berichten:

Opgave

Hoeveel berichten matchen er volledig met regel 0 na aanpassing van regels 8 en 11? Hiervoor ga je als volgt te werk:

Voorbeeld

In deze interactieve sessie gaan we ervan uit dat de tekstbestanden messages.txt2 en rules.txt3 zich in de huidige directory bevinden.

> match("bbabbbbaabaabba", "rules.txt")
true
> match("babbbbaabbbbbabbbbbbaabaaabaaa", "rules.txt")
true
> match("aaabbbbbbaaaabaababaabababbabaaabbababababaaa
", "rules.txt")
true
> match("abbbbbabbbaaaababbaabbbbabababbbabbbbbbabaaaa", "rules.txt")
false
> match("aaaabbaaaabbaaa", "rules.txt")
false
> match("babaaabbbaaabaababbaabababaaab", "rules.txt")
false

> matches("messages.txt", "rules.txt")
12