#!/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))