#advent of code 2020 #day 15 #it took less than 1min to bruteforce part 2 so I guess it's a free star limit1 = 2020; limit2 = 30000000; turn = 0; SpokenNumbers = dict(); StartingNumbers =[int(N) for N in open("15.in","r").read().split(",")]; for i,n in enumerate(StartingNumbers[:-1]): turn += 1; SpokenNumbers[n] = i+1; #LastNumber = n; print(turn,n); p1 = None; p2 = None; turn += 1; LastNumber = StartingNumbers[-1]; while turn < limit2: turn += 1; if LastNumber in SpokenNumbers: speak = turn -1 - SpokenNumbers[LastNumber]; else: speak = 0; SpokenNumbers[LastNumber] = turn -1; LastNumber = speak; print(turn, speak); #since it's a bruteforce I'm leaving it as a progress bar if turn == limit1: p1 = LastNumber; p2 = LastNumber; print("part 1 = ", p1); print("part 2 = ", p2);