day 10, cool stuff!

This commit is contained in:
2025-12-10 19:19:45 +00:00
parent eafb240f51
commit f053bc804c
3 changed files with 253 additions and 0 deletions

47
10/ex1.py Normal file
View File

@@ -0,0 +1,47 @@
from collections import deque
def press(state, button):
new_state = list(state)
for i in range(len(button)):
new_state[button[i]] ^= 1
return tuple(new_state)
def bfs(queue, visited, goal, buttons):
while queue:
state, presses = queue.popleft()
if state == goal:
return presses
if state in visited:
continue
visited.add(state)
for button in buttons:
new_state = press(state, button)
if new_state not in visited:
queue.append((new_state, presses + 1))
print('No solution found')
return -1
with open('input.txt', 'r') as file:
lines = file.readlines()
count = 0
for line in lines:
line = line.rstrip('\n').split()
goal_text = line[0].strip('[]')
goal = []
for char in goal_text:
if char == '.':
goal.append(0)
elif char == '#':
goal.append(1)
goal = tuple(goal)
buttons = []
for i in range(1, len(line) - 1):
buttons.append(tuple(map(int, line[i].strip('()').split(','))))
initial = tuple([0] * len(goal))
queue = deque([(initial, 0)])
visited = set()
count += bfs(queue, visited, goal, buttons)
print(count)