diff options
Diffstat (limited to '2022/14')
-rw-r--r-- | 2022/14/input | 140 | ||||
-rw-r--r-- | 2022/14/solve.py | 71 |
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)}") |