diff options
| -rw-r--r-- | 22.14/main.py | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/22.14/main.py b/22.14/main.py new file mode 100644 index 0000000..5078f4d --- /dev/null +++ b/22.14/main.py @@ -0,0 +1,38 @@ +from sys import stdin + +def birange(a, b): +	if b < a: a, b = b, a +	return range(a, b + 1) + +solid = set() +for line in stdin: +	parts = [[int(n) for n in s.split(',')] for s in line.split("->")] +	for a, b in zip(parts, parts[1:]): +		for x in birange(a[0], b[0]): +			for y in birange(a[1], b[1]): +				solid.add((x, y)) + +max_y = max([y for x,y in solid]) +print(max_y) + +def drop(x, y): +	while True: +		while not (x, y+1) in solid: +			y += 1 +			if max_y < y: +				return False +		if not (x-1, y+1) in solid: +			x -= 1 +			y += 1 +		elif not (x+1, y+1) in solid: +			x += 1 +			y += 1 +		else: +			print(x, y) +			solid.add((x, y)) +			return True + +n = 0 +while drop(500, 0): +	n += 1 +print(n) | 
