#!/usr/bin/phon3 def parse_line(line): p1, _, p2 = line.split() x1,y1 = p1.split(',') x2,y2 = p2.split(',') return int(x1), int(y1), int(x2), int(y2) def part_1(input): result = 0 field = [[0 for x in range(1000)] for y in range(1000)] for line in input: line = line.strip() x1,y1,x2,y2 = parse_line(line) if x1 == x2 or y1 == y2: for x in range(min(x1,x2), max(x1,x2) + 1): for y in range(min(y1,y2), max(y1,y2) + 1): field[x][y] += 1 for x in range(1000): for y in range(1000): if field[x][y] >= 2: result += 1 print("Part 1 result:", result) def part_2(input): result = 0 field = [[0 for x in range(1000)] for y in range(1000)] for line in input: line = line.strip() x1,y1,x2,y2 = parse_line(line) if x1 == x2 or y1 == y2: for x in range(min(x1,x2), max(x1,x2) + 1): for y in range(min(y1,y2), max(y1,y2) + 1): field[x][y] += 1 elif abs(x1 - x2) == abs(y1 - y2): dx = 1 if x1 > x2: dx = -1 dy = 1 if y1 > y2: dy = -1 for n in range(abs(x1 - x2) + 1): field[x1 + (dx * n)][y1 + (dy * n)] += 1 for x in range(1000): for y in range(1000): if field[x][y] >= 2: result += 1 print("Part 2 result:", result) input = list() with open('input.txt') as fp: input = fp.readlines() part_1(input) part_2(input)