aboutsummaryrefslogtreecommitdiff
path: root/2022
diff options
context:
space:
mode:
Diffstat (limited to '2022')
-rw-r--r--2022/14/input140
-rw-r--r--2022/14/solve.py71
2 files changed, 211 insertions, 0 deletions
diff --git a/2022/14/input b/2022/14/input
new file mode 100644
index 0000000..4504410
--- /dev/null
+++ b/2022/14/input
@@ -0,0 +1,140 @@
+457,150 -> 462,150
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+469,70 -> 469,69 -> 469,70 -> 471,70 -> 471,68 -> 471,70 -> 473,70 -> 473,64 -> 473,70
+484,89 -> 484,92 -> 482,92 -> 482,100 -> 489,100 -> 489,92 -> 487,92 -> 487,89
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+451,161 -> 456,161
+488,103 -> 488,107 -> 487,107 -> 487,111 -> 494,111 -> 494,107 -> 493,107 -> 493,103
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+473,40 -> 473,41 -> 491,41 -> 491,40
+484,89 -> 484,92 -> 482,92 -> 482,100 -> 489,100 -> 489,92 -> 487,92 -> 487,89
+458,161 -> 463,161
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+484,89 -> 484,92 -> 482,92 -> 482,100 -> 489,100 -> 489,92 -> 487,92 -> 487,89
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+461,57 -> 465,57
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+464,150 -> 469,150
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+469,70 -> 469,69 -> 469,70 -> 471,70 -> 471,68 -> 471,70 -> 473,70 -> 473,64 -> 473,70
+473,40 -> 473,41 -> 491,41 -> 491,40
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+473,40 -> 473,41 -> 491,41 -> 491,40
+470,136 -> 470,138 -> 464,138 -> 464,145 -> 480,145 -> 480,138 -> 474,138 -> 474,136
+467,47 -> 471,47
+488,103 -> 488,107 -> 487,107 -> 487,111 -> 494,111 -> 494,107 -> 493,107 -> 493,103
+475,76 -> 475,80 -> 474,80 -> 474,86 -> 485,86 -> 485,80 -> 480,80 -> 480,76
+470,50 -> 474,50
+475,76 -> 475,80 -> 474,80 -> 474,86 -> 485,86 -> 485,80 -> 480,80 -> 480,76
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+464,55 -> 468,55
+469,70 -> 469,69 -> 469,70 -> 471,70 -> 471,68 -> 471,70 -> 473,70 -> 473,64 -> 473,70
+469,70 -> 469,69 -> 469,70 -> 471,70 -> 471,68 -> 471,70 -> 473,70 -> 473,64 -> 473,70
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+488,103 -> 488,107 -> 487,107 -> 487,111 -> 494,111 -> 494,107 -> 493,107 -> 493,103
+455,57 -> 459,57
+454,152 -> 459,152
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+454,158 -> 459,158
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+450,155 -> 455,155
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+476,50 -> 480,50
+475,76 -> 475,80 -> 474,80 -> 474,86 -> 485,86 -> 485,80 -> 480,80 -> 480,76
+464,50 -> 468,50
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+472,119 -> 472,120 -> 480,120 -> 480,119
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+475,76 -> 475,80 -> 474,80 -> 474,86 -> 485,86 -> 485,80 -> 480,80 -> 480,76
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+475,76 -> 475,80 -> 474,80 -> 474,86 -> 485,86 -> 485,80 -> 480,80 -> 480,76
+470,44 -> 474,44
+470,136 -> 470,138 -> 464,138 -> 464,145 -> 480,145 -> 480,138 -> 474,138 -> 474,136
+469,70 -> 469,69 -> 469,70 -> 471,70 -> 471,68 -> 471,70 -> 473,70 -> 473,64 -> 473,70
+478,115 -> 494,115 -> 494,114
+470,136 -> 470,138 -> 464,138 -> 464,145 -> 480,145 -> 480,138 -> 474,138 -> 474,136
+469,70 -> 469,69 -> 469,70 -> 471,70 -> 471,68 -> 471,70 -> 473,70 -> 473,64 -> 473,70
+460,72 -> 460,73 -> 477,73 -> 477,72
+484,89 -> 484,92 -> 482,92 -> 482,100 -> 489,100 -> 489,92 -> 487,92 -> 487,89
+467,57 -> 471,57
+460,148 -> 465,148
+470,136 -> 470,138 -> 464,138 -> 464,145 -> 480,145 -> 480,138 -> 474,138 -> 474,136
+475,76 -> 475,80 -> 474,80 -> 474,86 -> 485,86 -> 485,80 -> 480,80 -> 480,76
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+447,158 -> 452,158
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+469,70 -> 469,69 -> 469,70 -> 471,70 -> 471,68 -> 471,70 -> 473,70 -> 473,64 -> 473,70
+461,53 -> 465,53
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+484,89 -> 484,92 -> 482,92 -> 482,100 -> 489,100 -> 489,92 -> 487,92 -> 487,89
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,89 -> 484,92 -> 482,92 -> 482,100 -> 489,100 -> 489,92 -> 487,92 -> 487,89
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+484,89 -> 484,92 -> 482,92 -> 482,100 -> 489,100 -> 489,92 -> 487,92 -> 487,89
+478,115 -> 494,115 -> 494,114
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+460,72 -> 460,73 -> 477,73 -> 477,72
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+488,103 -> 488,107 -> 487,107 -> 487,111 -> 494,111 -> 494,107 -> 493,107 -> 493,103
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+470,136 -> 470,138 -> 464,138 -> 464,145 -> 480,145 -> 480,138 -> 474,138 -> 474,136
+488,103 -> 488,107 -> 487,107 -> 487,111 -> 494,111 -> 494,107 -> 493,107 -> 493,103
+461,152 -> 466,152
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+472,119 -> 472,120 -> 480,120 -> 480,119
+444,161 -> 449,161
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+475,76 -> 475,80 -> 474,80 -> 474,86 -> 485,86 -> 485,80 -> 480,80 -> 480,76
+472,119 -> 472,120 -> 480,120 -> 480,119
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+472,133 -> 472,123 -> 472,133 -> 474,133 -> 474,131 -> 474,133 -> 476,133 -> 476,132 -> 476,133 -> 478,133 -> 478,123 -> 478,133 -> 480,133 -> 480,130 -> 480,133 -> 482,133 -> 482,131 -> 482,133 -> 484,133 -> 484,132 -> 484,133 -> 486,133 -> 486,123 -> 486,133 -> 488,133 -> 488,125 -> 488,133
+470,136 -> 470,138 -> 464,138 -> 464,145 -> 480,145 -> 480,138 -> 474,138 -> 474,136
+488,103 -> 488,107 -> 487,107 -> 487,111 -> 494,111 -> 494,107 -> 493,107 -> 493,103
+494,23 -> 494,22 -> 494,23 -> 496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,15 -> 498,23 -> 500,23 -> 500,16 -> 500,23 -> 502,23 -> 502,14 -> 502,23 -> 504,23 -> 504,17 -> 504,23
+469,70 -> 469,69 -> 469,70 -> 471,70 -> 471,68 -> 471,70 -> 473,70 -> 473,64 -> 473,70
+470,136 -> 470,138 -> 464,138 -> 464,145 -> 480,145 -> 480,138 -> 474,138 -> 474,136
+468,152 -> 473,152
+473,47 -> 477,47
+488,103 -> 488,107 -> 487,107 -> 487,111 -> 494,111 -> 494,107 -> 493,107 -> 493,103
+458,55 -> 462,55
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
+460,72 -> 460,73 -> 477,73 -> 477,72
+484,36 -> 484,31 -> 484,36 -> 486,36 -> 486,31 -> 486,36 -> 488,36 -> 488,26 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,26 -> 494,36 -> 496,36 -> 496,28 -> 496,36 -> 498,36 -> 498,33 -> 498,36 -> 500,36 -> 500,26 -> 500,36
diff --git a/2022/14/solve.py b/2022/14/solve.py
new file mode 100644
index 0000000..d327e85
--- /dev/null
+++ b/2022/14/solve.py
@@ -0,0 +1,71 @@
+data = [
+ [[int(d) for d in r.split(",")] for r in dat.split(" -> ")]
+ for dat in open("input").readlines()
+ if dat != ""
+]
+
+X = 1000
+Y = 500
+SOURCE = [500, 0]
+
+AIR = 0
+ROCK = 1
+SAND = 2
+RESTED = 3
+
+
+def rocks(grid, line):
+ for i, (x, y) in enumerate(line[1:]):
+ px = line[i][0]
+ py = line[i][1]
+ xmax, xmin = max(x, px), min(x, px)
+ ymax, ymin = max(y, py), min(y, py)
+
+ for lx in range(xmin, xmax + 1):
+ for ly in range(ymin, ymax + 1):
+ grid[lx][ly] = ROCK
+
+
+def simulate(grid):
+ falling = True
+ while falling:
+ # new sand drop!
+ sand = SOURCE.copy()
+ while True:
+ if sand[1] >= Y - 1:
+ falling = False
+ break
+ elif grid[sand[0]][sand[1] + 1] == AIR:
+ sand[1] += 1
+ elif grid[sand[0] - 1][sand[1] + 1] == AIR:
+ sand[0] -= 1
+ sand[1] += 1
+ elif grid[sand[0] + 1][sand[1] + 1] == AIR:
+ sand[0] += 1
+ sand[1] += 1
+ else:
+ grid[sand[0]][sand[1]] = RESTED
+ if sand == SOURCE:
+ falling = False
+ break
+
+
+def solve(grounded):
+ grid = [[AIR] * Y for i in range(X)]
+ for line in data:
+ rocks(grid, line)
+
+ if grounded:
+ ground = max(
+ max([i for i, y in enumerate(col) if y == ROCK], default=0)
+ for col in grid
+ )
+ for x in range(X):
+ grid[x][ground + 2] = ROCK
+
+ simulate(grid)
+ return sum(col.count(RESTED) for col in grid)
+
+
+print(f"Part 1: {solve(False)}")
+print(f"Part 2: {solve(True)}")