diff --git a/day13/part2-minified.py b/day13/part2-minified.py index bec0517..5456268 100644 --- a/day13/part2-minified.py +++ b/day13/part2-minified.py @@ -1,4 +1 @@ -from functools import reduce; from math import gcd; lcm = lambda a, b: abs(a*b) // gcd(a, b) -def merge(a, b, x, y): - while b != y: b += a * (max(-1, y-b-1) // a + 1); y += x * (max(-1, b-y-1) // x + 1); return lcm(a, x), b -print(reduce(lambda fn, fm: merge(*fn, *fm), ((int(x), -idx) for idx, x in enumerate([x.strip() for x in open("input.txt")][1].split(',')) if x != 'x'), (1, 0))[1]) +from functools import reduce; from math import gcd; lcm = lambda a, b: abs(a*b) // gcd(a, b); merge = lambda a, b, x, y: (lcm(a, x), b) if b == y else merge(a, b + a * (max(-1, y-b-1) // a + 1), x, y + x * (max(-1, b-y-1) // x + 1)); print(reduce(lambda fn, fm: merge(*fn, *fm), ((int(x), -idx) for idx, x in enumerate([x.strip() for x in open("input.txt")][1].split(',')) if x != 'x'), (1, 0))[1])