25 lines
1014 B
Python
Executable File
25 lines
1014 B
Python
Executable File
#!/usr/bin/env python3.11
|
|
from typing import List
|
|
from datetime import datetime, timedelta
|
|
from data import Node, parse
|
|
|
|
def count_steps_XXA_to_XXZ(directions:str, node_list: List[Node]) -> int:
|
|
current_nodes = list(filter(lambda node: node.is_A_node(), node_list))
|
|
count = 0
|
|
start_time = datetime.now()
|
|
while not all(map(lambda n: n.is_Z_node(), current_nodes)):
|
|
if directions[count % len(directions)] == 'L':
|
|
current_nodes = list(map(lambda n: n.move_left(node_list), current_nodes))
|
|
else:
|
|
current_nodes = list(map(lambda n: n.move_right(node_list), current_nodes))
|
|
if start_time + timedelta(minutes=1) <= datetime.now():
|
|
str_nodes = [node.__str__() for node in current_nodes]
|
|
print(f"count: {count} / {str_nodes}")
|
|
start_time = datetime.now()
|
|
count += 1
|
|
return count
|
|
if __name__ == '__main__':
|
|
directions, node_list = parse('input.txt')
|
|
print(count_steps_XXA_to_XXZ(directions, node_list))
|
|
|