Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

18 lines
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)