diff --git a/three.py b/three.py index 0eeee0a..72086ca 100755 --- a/three.py +++ b/three.py @@ -2,20 +2,15 @@ from useful import * def stuff(l): - d = {x: True for x in l[:len(l)//2]} - return next(x for x in l[len(l)//2:] if d.get(x)) + return next(iter(set(l[:len(l)//2]) & set(l[len(l)//2:]))) def points(c): o = ord(c) return 27 + o - ord('A') if o < ord('a') else 1 + o - ord('a') def twuff(trip): - d = [{x: True for x in l} for l in trip[:2]] - return next(c for c in trip[2] if c in d[0] and c in d[1]) - -def trips(ls): - return [[ls[i], ls[i+1], ls[i+2]] for i in range(0, len(ls), 3)] + return next(iter(reduce(lambda a, b: a & b, (set(l) for l in trip)))) ls = lines(open(0)) print(sum(points(stuff(l)) for l in ls)) -print(sum(points(twuff(l)) for l in trips(ls))) +print(sum(points(twuff(l)) for l in batched(ls, 3)))