1
1
import os
2
2
import sys
3
+ import re
3
4
4
5
debug = True
5
6
@@ -31,13 +32,13 @@ def rules(lines):
31
32
rules [num ] = [terms [0 ]]
32
33
else :
33
34
if len (terms ) == 2 :
34
- rules [num ] = [terms [0 ],terms [1 ],"& " ]
35
+ rules [num ] = ["(" , terms [0 ],terms [1 ],") " ]
35
36
else :
36
37
if len (terms ) == 3 :
37
- rules [num ] = [terms [0 ],terms [2 ],"| " ]
38
+ rules [num ] = ["(" , terms [0 ],"|" , terms [2 ],") " ]
38
39
else :
39
40
if len (terms ) == 5 :
40
- rules [num ] = [terms [0 ],terms [1 ],"& " ,terms [3 ],terms [4 ],"&" , "| " ]
41
+ rules [num ] = ["(" , terms [0 ],terms [1 ],"| " ,terms [3 ],terms [4 ],") " ]
41
42
else :
42
43
print ("Error len(terms)=" ,len (terms ))
43
44
return rules
@@ -53,11 +54,17 @@ def checkAllChars(list):
53
54
with open (fileName ) as file :
54
55
lines = file .readlines ()
55
56
ruleLines = []
57
+ messages = []
58
+ isRule = True
56
59
for line in lines :
57
60
if len (line ) > 1 :
58
- ruleLines .append (line )
61
+ if isRule :
62
+ ruleLines .append (line )
63
+ else :
64
+ messages .append (line )
59
65
else :
60
- break
66
+ isRule = False
67
+
61
68
62
69
rules = rules (ruleLines )
63
70
@@ -70,4 +77,23 @@ def checkAllChars(list):
70
77
rule0 = rule0 [0 :i ] + rules [rule0 [i ]] + rule0 [i + 1 :]
71
78
allChars = checkAllChars (rule0 )
72
79
73
- print (rule0 )
80
+ #make regex string
81
+ strRule0 = "^"
82
+ for item in rule0 :
83
+ strRule0 += str (item )
84
+ strRule0 += "$"
85
+ if debug :
86
+ print (strRule0 )
87
+ part1Pattern = re .compile (strRule0 )
88
+
89
+ #check remaining strings
90
+ matches = 0
91
+ for msg in messages :
92
+ if part1Pattern .match (msg ) != None :
93
+ matches += 1
94
+ print (matches )
95
+
96
+ #implement part 2 changes
97
+ rules [8 ] = ["(" ,42 ,"|" ,42 ,8 ,")" ]
98
+ rules [11 ] = ["(" ,42 ,31 ,"|" ,42 ,11 ,31 ,")" ]
99
+
0 commit comments