28 lines
877 B
Python
28 lines
877 B
Python
with open(r'day10/input.txt', 'r') as input:
|
|
lines = input.read().split('\n')[:-1]
|
|
|
|
def push_button(config,button):
|
|
return tuple(not config[i] if i in button else config[i] for i in range(len(config)))
|
|
|
|
def find_min_tries(target,buttons,current):
|
|
if buttons == []:
|
|
return 99999
|
|
new = push_button(current,buttons[0])
|
|
if new == target:
|
|
return 1
|
|
return min(find_min_tries(target,buttons[1:],current),find_min_tries(target,buttons[1:],new)+1)
|
|
|
|
|
|
target = []
|
|
buttons = []
|
|
|
|
for line in lines:
|
|
split_lines = line.split(' ')
|
|
target.append(tuple(map(lambda x: True if x == '#' else False,split_lines[0][1:-1])))
|
|
buttons.append(list(map(lambda x: set(map(int,(x[1:-1]).split(','))),split_lines[1:-1])))
|
|
|
|
|
|
sum = 0
|
|
for i in range(len(lines)):
|
|
sum += find_min_tries(target[i],buttons[i],tuple(False for _ in target[i]))
|
|
print(sum)
|