diff --git a/day10/sol2.py b/day10/sol2.py new file mode 100644 index 0000000..7d7095f --- /dev/null +++ b/day10/sol2.py @@ -0,0 +1,32 @@ +import numpy, numpy.linalg +def solve(input): + less = 0 + greater = 0 + for line in open(input): + parts = line.split()[1:] + idxs = [delist(p) for p in parts[:-1]] + target = delist(parts[-1]) + if len(idxs) != len(target) and 0: + if len(idxs) > len(target): + greater += 1 + if len(idxs) < len(target): + less += 1 + #print(line.strip()) + else: + #assert len(idxs) == len(target) + N = len(target) + matrix = [[int(i in row) for i in range(N)] for row in idxs] + + #print(matrix, target) + arr = numpy.array(matrix) + print(arr) + try: + print(target, numpy.linalg.lstsq(arr.T, target)) + except numpy.linalg.LinAlgError as ex: + print(target, ex) + print(less, greater) + +def delist(s): + return [int(x) for x in s.strip("{}()").split(',')] + +solve("input")