Skip to content

Commit 94a516f

Browse files
author
Chris Poch
committed
Part 1 complete via regex
1 parent 14f8d0a commit 94a516f

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

19.py

+32-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import os
22
import sys
3+
import re
34

45
debug = True
56

@@ -31,13 +32,13 @@ def rules(lines):
3132
rules[num] = [terms[0]]
3233
else:
3334
if len(terms) == 2:
34-
rules[num] = [terms[0],terms[1],"&"]
35+
rules[num] = ["(",terms[0],terms[1],")"]
3536
else:
3637
if len(terms) == 3:
37-
rules[num] = [terms[0],terms[2],"|"]
38+
rules[num] = ["(",terms[0],"|",terms[2],")"]
3839
else:
3940
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],")"]
4142
else:
4243
print("Error len(terms)=",len(terms))
4344
return rules
@@ -53,11 +54,17 @@ def checkAllChars(list):
5354
with open(fileName) as file:
5455
lines = file.readlines()
5556
ruleLines = []
57+
messages = []
58+
isRule = True
5659
for line in lines:
5760
if len(line) > 1:
58-
ruleLines.append(line)
61+
if isRule:
62+
ruleLines.append(line)
63+
else:
64+
messages.append(line)
5965
else:
60-
break
66+
isRule = False
67+
6168

6269
rules = rules(ruleLines)
6370

@@ -70,4 +77,23 @@ def checkAllChars(list):
7077
rule0 = rule0[0:i] + rules[rule0[i]] + rule0[i+1:]
7178
allChars = checkAllChars(rule0)
7279

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

Comments
 (0)