from pulp import LpProblem, LpVariable, LpMinimize, lpSum, PULP_CBC_CMD def solve(goal, buttons): # hence another thing i havent done in years prob = LpProblem("Operation_Dumbass_Elves", LpMinimize) x = [LpVariable(f"x_{i}", lowBound=0, cat='Integer') for i in range(len(buttons))] prob += lpSum(x), "Button Presses" for i in range(len(goal)): constraint = [] for j in range(len(buttons)): M_ij = buttons[j][i] constraint.append(M_ij * x[j]) prob += lpSum(constraint) == goal[i], f"Constraint_{i}" prob.solve(PULP_CBC_CMD(msg=0)) return (int(prob.objective.value())) with open('input.txt', 'r') as file: lines = file.readlines() count = 0 for line in lines: line = line.rstrip('\n').split() goal = tuple(map(int, line[-1].strip('{}').split(','))) buttons = [] for i in range(1, len(line) - 1): incs = map(int, line[i].strip('()').split(',')) button = [0] * len(goal) for inc in incs: button[inc] += 1 buttons.append(tuple(button)) count += solve(goal, buttons) print(count)