|
- import re
-
-
- def solve(text, digits):
- tot = 0
- rgx = '(' + '|'.join(digits) + ')'
- rgx = f'(?={rgx})' # allow overlapping matches
- for ln in text.splitlines():
- ns = [digits.get(s, s) for s in re.findall(rgx, ln)]
- tot += 10 * ns[0] + ns[-1]
- print(tot)
-
-
- text = open(0).read()
- xs = {v: k for k, v in enumerate('0123456789')}
- ys = {v: k for k, v in enumerate('zero one two three four five six seven eight nine'.split())}
- solve(text, xs)
- solve(text, xs | ys)
|