#!/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)