summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--22.14/main.py38
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)