diff --git a/Python/2024/06/main.py b/Python/2024/06/main.py new file mode 100644 index 0000000..8be68dd --- /dev/null +++ b/Python/2024/06/main.py @@ -0,0 +1,51 @@ +input = open("input", 'r') + +# d = [line for line in input] +# d = [[val for val in line.strip()] for line in input] +d = {(complex(x,y)): c for y,line in enumerate(input) for x,c in enumerate(line)} + +guard = 0 + +for pos,char in d.items(): + if char == "^": + guard = pos + break + +def step(pos,dir): + npos = pos + dir + if npos not in d: + return -1,-1 + elif d[npos] == "#": + return pos,(dir*1j) + else: + return npos,dir + +def run(): + pos = guard + sposs = set([pos]) + dir = -1j + loop = set([(pos,dir)]) + while pos != -1: + pos,dir = step(pos,dir) + if (pos,dir) in loop: + return -1 + if pos == -1: + break + sposs.add(pos) + loop.add((pos,dir)) + return len(sposs) + +def run2(): + sm = 0 + for pos,char in d.items(): + if char != ".": + continue + d[pos] = "#" + if run(True) == -1: + sm += 1 + d[pos] = "." + return sm + + +print(run()) +print(run2())