#!/usr/bin/env python3 from functools import reduce from re import findall from copy import deepcopy import sys from itertools import combinations import numpy as np from scipy.optimize import linprog filename = sys.argv[1] if len(sys.argv) == 2 \ else "in/" + sys.argv[0].split('/')[-1].rstrip(".py") + ".pzl" data = open(filename).read() lines = data.rstrip('\n').split('\n') res1 = 0 res2 = 0 def part1(light, buttons): for r in range(len(buttons)): for c in combinations(buttons, r): state = [0 for _ in light] for b in c: for l in b: state[l] ^= 1 if light == state: return r for line in lines: s = line.split(' ') s_light = s[0] s_buttons = s[1:-1] s_jolt = s[-1] light = [1 if i == '#' else 0 for i in s_light[1:-1]] buttons = [] for sb in s_buttons: buttons.append([int(i) for i in sb[1:-1].split(',')]) jolt = [int(i) for i in s_jolt[1:-1].split(',')] res = part1(light, buttons) res1 += res print('res1:', res1) print('res2:', res2)