50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
![]() |
#!/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]
|