@@ -0,0 +1,17 @@ | |||
import re | |||
import sys | |||
def recurse(rule): | |||
return re.sub(r'(\d+)', lambda m: f'({recurse(rules[m.group(1)])})', rule) | |||
text = sys.stdin.read() | |||
rules, stuff = text.split('\n\n') | |||
rules = dict([ln.split(': ') for ln in rules.splitlines()]) | |||
ans = 0 | |||
rex = re.compile(recurse(rules['0']).replace('"', '').replace(' ', '') + '$') | |||
for line in text.splitlines(): | |||
ans += bool(rex.match(line)) | |||
print(ans) |