#!/usr/bin/env python import time import re points = [] def read_input(): with open('input.txt', 'r') as f: for line in f: yield [int(x) for x in re.findall(r'-?\d+', line)] def print_points(points): max_x = max([p[0] for p in points]) min_x = min([p[0] for p in points]) max_y = max([p[1] for p in points]) min_y = min([p[1] for p in points]) delta_x = abs(max_x - min_x) delta_y = abs(max_y - min_y) grid = [['.' for x in range(delta_x+1)] for y in range(delta_y+1)] move_x = min_x if min_x < 0 else min_x*-1 move_y = min_y if min_y < 0 else min_y*-1 for p in points: grid[p[1]+move_y][p[0]+move_x] = 'x' for line in grid: print(''.join(line)) time.sleep(1) for point in read_input(): points.append(point) elapsed = 0 while True: max_x = max([p[0] for p in points]) min_x = min([p[0] for p in points]) max_y = max([p[1] for p in points]) min_y = min([p[1] for p in points]) delta_x = abs(max_x - min_x) delta_y = abs(max_y - min_y) print("elapsed: {}, delta: {}/{}".format(elapsed,delta_x, delta_y)) if delta_x < 70: print_points(points) elapsed += 1 points = [ [p[0]+p[2], p[1]+p[3], p[2], p[3]] for p in points]