summaryrefslogtreecommitdiff
path: root/2022/day9/asd.py
blob: 0065441796115d9f6339cb9718ed09a876611e2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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)