#!/bin/python3 import re import sys from pprint import pprint from collections import Counter import numpy as np input_f = sys.argv[1] def pp(x): for i in x: print(nodes[i].value,nodes[i].left,nodes[i].right) d, *maps = open(input_f).read().split('\n') class Node(): def __init__(self,value,left,right): self.value = value self.left = left self.right = right s = [] l = [] r = [] maps = maps nodes = {} for i in maps: if i == '': continue s = i[:3] l = i[7:10] r = i[12:15] nodes[s] = Node(s,l,r) current = 'AAA' steps = 0 count = 0 try: while current != 'ZZZ': steps += 1 current = nodes[current].left if d[count%len(d)] == 'L' else nodes[current].right count += 1 print(steps) except: print() def done(x): print(x) for i in x: if not i.endswith('Z'): return False return True pp(nodes) current = [] for i in nodes: if i.endswith('A'): current.append(i) count = 0 steps = 0 while not done(current): steps += 1 for i in range(len(current)): if d[count%len(d)] == 'L': #print("Going left from " + str(current[i]) + " to " + str(nodes[current[i]].left)) current[i] = nodes[current[i]].left else: #print("Going right from " + str(current[i]) + " to " + str(nodes[current[i]].right)) current[i] = nodes[current[i]].right count += 1 print(steps)