diff options
Diffstat (limited to '2022/day9/asd.py')
| -rwxr-xr-x | 2022/day9/asd.py | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/2022/day9/asd.py b/2022/day9/asd.py new file mode 100755 index 0000000..0065441 --- /dev/null +++ b/2022/day9/asd.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 + +# import numpy as np +from functools import reduce +from re import findall +from copy import deepcopy +import sys + +# filename = "ref.txt" +# filename = "ref2.txt" +filename = "pzl.txt" +data = open(filename).read() +lines = [line for line in data.rstrip('\n').split('\n')] + + +moves = [] +for a in lines: + m = [0, 0] + direction, count = a.split(' ') + if direction == 'R': + m = [1, 0] + elif direction == 'U': + m = [0, 1] + elif direction == 'D': + m = [0, -1] + elif direction == 'L': + m = [-1, 0] + + # m = [int(count)*i for i in m] + for _ in range(int(count)): + moves.append(m) + +# print(moves) + +res1 = 0 +h = [0,0] +t = [0,0] +visited = set() +visited.add(tuple(t)) + +for m in moves: + h = [hi + mi for hi,mi in zip(h,m)] + + dx = h[0] - t[0] + dy = h[1] - t[1] + + if abs(dx) > 1 or (abs(dx) > 0 and abs(dy) > 1): + t[0] += dx//abs(dx) + + if abs(dy) > 1 or (abs(dy) > 0 and abs(dx) > 1): + t[1] += dy//abs(dy) + + visited.add(tuple(t)) + + +res2 = 0 +ht = [[0,0] for i in range(10)] +visited9 = set() +visited9.add(tuple(ht[9])) + +for m in moves: + ht[0] = [hi + mi for hi,mi in zip(ht[0],m)] + + for i,_ in enumerate(ht): + if i == 0: + continue + dx = ht[i-1][0] - ht[i][0] + dy = ht[i-1][1] - ht[i][1] + + if abs(dx) > 1 or (abs(dx) > 0 and abs(dy) > 1): + ht[i][0] += dx//abs(dx) + + if abs(dy) > 1 or (abs(dy) > 0 and abs(dx) > 1): + ht[i][1] += dy//abs(dy) + + # print(ht) + visited9.add(tuple(ht[9])) + +# print(visited9) + +res1 = len(visited) +res2 = len(visited9) + +print('res1:', res1) +print('res2:', res2) + |
