Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

18 Zeilen
403B

  1. import re
  2. import sys
  3. def recurse(rule):
  4. return re.sub(r'(\d+)', lambda m: f'({recurse(rules[m.group(1)])})', rule)
  5. text = sys.stdin.read()
  6. rules, stuff = text.split('\n\n')
  7. rules = dict([ln.split(': ') for ln in rules.splitlines()])
  8. ans = 0
  9. rex = re.compile(recurse(rules['0']).replace('"', '').replace(' ', '') + '$')
  10. for line in text.splitlines():
  11. ans += bool(rex.match(line))
  12. print(ans)