Moved 2022 to own dir
This commit is contained in:
46
2022/09/i.py
Normal file
46
2022/09/i.py
Normal file
@@ -0,0 +1,46 @@
|
||||
import os
|
||||
|
||||
input = open(os.path.dirname(__file__) +
|
||||
"/input.txt", "r").readlines()
|
||||
|
||||
|
||||
def dir(d):
|
||||
match d:
|
||||
case 'R': return (1, 0)
|
||||
case 'L': return (-1, 0)
|
||||
case 'U': return (0, 1)
|
||||
case 'D': return (0, -1)
|
||||
|
||||
|
||||
max = 10
|
||||
|
||||
tails = []
|
||||
rope = [(0, 0) for i in range(max)]
|
||||
|
||||
for l in input:
|
||||
moves = l.split()
|
||||
m = dir(moves[0])
|
||||
for steps in range(int(moves[1])):
|
||||
rope[0] = [rope[0][0]+m[0], rope[0][1]+m[1]]
|
||||
for r in range(max-1):
|
||||
k, kn = rope[r:r+2]
|
||||
dx, dy = k[0]-kn[0], k[1] - kn[1]
|
||||
dist = abs(dx) + abs(dy)
|
||||
if dist == 2:
|
||||
if k[0] == kn[0]:
|
||||
rope[r+1] = (rope[r+1][0], rope[r+1][1]+dy//2)
|
||||
elif k[1] == kn[1]:
|
||||
rope[r+1] = (rope[r+1][0]+dx//2, rope[r+1][1])
|
||||
elif dist == 3:
|
||||
if abs(dx) == 2:
|
||||
rope[r+1] = (rope[r+1][0]+dx//2, rope[r][1])
|
||||
elif abs(dy) == 2:
|
||||
rope[r+1] = (rope[r][0], rope[r+1][1]+dy//2)
|
||||
elif dist == 4:
|
||||
rope[r+1] = (rope[r+1][0]+dx//2, rope[r+1][1]+dy//2)
|
||||
tails.append(rope[-1])
|
||||
|
||||
l = []
|
||||
for i in tails:
|
||||
l.append(str(i[0])+","+str(i[1]))
|
||||
print(len(set(l)))
|
||||
Reference in New Issue
Block a user