From 8c1c438930eb450102f992fbb88d777c9476cbf4 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Wed, 14 Dec 2022 15:09:27 +0100 Subject: day 14 part 1 --- 22.14/main.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 22.14/main.py (limited to '22.14') 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) -- cgit 1.4.1-2-gfad0