p1 part 1 submitted, runs fine. part 2 says "wrong answer for you but right for someone else". doing a debug-print-everything run on the intermediate stages of the data after my regex all seems correct, but it's also 23h50 and it's been a looooong week. so I guess I'll take a look a fresh look at that one in the morning over coffee
part1, badly:
spoiler
import re
pattern = '\d'
cmp = re.compile(pattern)
# extremely lazy, of the ungood kind
datapath = 'data'
lines = open(datapath, 'r').read().split('\n')
candidates = []
values = []
for l in lines:
if l != '':
r = cmp.findall(l)
candidates.append(r)
values.append(int(''.join([r[0], r[-1]])))
print(candidates)
print(values)
print(sum(values))
(I really wasn't kidding about the badly)
part2:
spoiler
missed the eightwo case
changes:
mapping = {...} # name/int pairs
pattern = f'(?=(\d|{"|".join(mapping.keys())}))'
lines = open(datapath, 'r').read().split('\n').remove('')
values = []
for l in lines:
r = cmp.findall(l)
equivs = [str(mapping.get(x, x)) for x in r]
head, tail = [equivs[0], equivs[-1]]
values.append(int(f"{head}{tail}"))
print(sum(values))