Finished day 14 advent of code
This commit is contained in:
32
advent_of_code/2022/14/Cargo.lock
generated
Normal file
32
advent_of_code/2022/14/Cargo.lock
generated
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "main"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "minimal-lexical"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nom"
|
||||||
|
version = "7.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
"minimal-lexical",
|
||||||
|
]
|
||||||
9
advent_of_code/2022/14/Cargo.toml
Normal file
9
advent_of_code/2022/14/Cargo.toml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[package]
|
||||||
|
name = "main"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
nom = "7.1.2"
|
||||||
173
advent_of_code/2022/14/input.txt
Normal file
173
advent_of_code/2022/14/input.txt
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
504,28 -> 509,28
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
500,26 -> 505,26
|
||||||
|
494,30 -> 499,30
|
||||||
|
525,159 -> 529,159
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
484,40 -> 484,42 -> 479,42 -> 479,49 -> 496,49 -> 496,42 -> 489,42 -> 489,40
|
||||||
|
484,40 -> 484,42 -> 479,42 -> 479,49 -> 496,49 -> 496,42 -> 489,42 -> 489,40
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
484,40 -> 484,42 -> 479,42 -> 479,49 -> 496,49 -> 496,42 -> 489,42 -> 489,40
|
||||||
|
513,36 -> 513,37 -> 525,37
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
489,86 -> 493,86
|
||||||
|
516,162 -> 520,162
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
479,89 -> 479,91 -> 478,91 -> 478,95 -> 486,95 -> 486,91 -> 483,91 -> 483,89
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
522,156 -> 526,156
|
||||||
|
482,65 -> 482,67 -> 475,67 -> 475,70 -> 495,70 -> 495,67 -> 488,67 -> 488,65
|
||||||
|
485,98 -> 485,101 -> 478,101 -> 478,108 -> 493,108 -> 493,101 -> 489,101 -> 489,98
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
484,40 -> 484,42 -> 479,42 -> 479,49 -> 496,49 -> 496,42 -> 489,42 -> 489,40
|
||||||
|
482,65 -> 482,67 -> 475,67 -> 475,70 -> 495,70 -> 495,67 -> 488,67 -> 488,65
|
||||||
|
502,132 -> 506,132
|
||||||
|
516,34 -> 521,34
|
||||||
|
482,65 -> 482,67 -> 475,67 -> 475,70 -> 495,70 -> 495,67 -> 488,67 -> 488,65
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
508,128 -> 512,128
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
495,80 -> 499,80
|
||||||
|
484,40 -> 484,42 -> 479,42 -> 479,49 -> 496,49 -> 496,42 -> 489,42 -> 489,40
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
497,28 -> 502,28
|
||||||
|
534,156 -> 538,156
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
528,156 -> 532,156
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
498,83 -> 502,83
|
||||||
|
537,159 -> 541,159
|
||||||
|
485,98 -> 485,101 -> 478,101 -> 478,108 -> 493,108 -> 493,101 -> 489,101 -> 489,98
|
||||||
|
482,65 -> 482,67 -> 475,67 -> 475,70 -> 495,70 -> 495,67 -> 488,67 -> 488,65
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
485,98 -> 485,101 -> 478,101 -> 478,108 -> 493,108 -> 493,101 -> 489,101 -> 489,98
|
||||||
|
528,150 -> 532,150
|
||||||
|
522,162 -> 526,162
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
505,32 -> 510,32
|
||||||
|
498,32 -> 503,32
|
||||||
|
495,34 -> 500,34
|
||||||
|
484,40 -> 484,42 -> 479,42 -> 479,49 -> 496,49 -> 496,42 -> 489,42 -> 489,40
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
495,73 -> 495,74 -> 497,74 -> 497,73
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
479,89 -> 479,91 -> 478,91 -> 478,95 -> 486,95 -> 486,91 -> 483,91 -> 483,89
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
479,89 -> 479,91 -> 478,91 -> 478,95 -> 486,95 -> 486,91 -> 483,91 -> 483,89
|
||||||
|
479,89 -> 479,91 -> 478,91 -> 478,95 -> 486,95 -> 486,91 -> 483,91 -> 483,89
|
||||||
|
514,132 -> 518,132
|
||||||
|
479,89 -> 479,91 -> 478,91 -> 478,95 -> 486,95 -> 486,91 -> 483,91 -> 483,89
|
||||||
|
479,89 -> 479,91 -> 478,91 -> 478,95 -> 486,95 -> 486,91 -> 483,91 -> 483,89
|
||||||
|
513,36 -> 513,37 -> 525,37
|
||||||
|
505,134 -> 509,134
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
489,80 -> 493,80
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
501,30 -> 506,30
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
509,34 -> 514,34
|
||||||
|
511,134 -> 515,134
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
501,86 -> 505,86
|
||||||
|
488,34 -> 493,34
|
||||||
|
491,32 -> 496,32
|
||||||
|
510,166 -> 510,167 -> 516,167 -> 516,166
|
||||||
|
479,89 -> 479,91 -> 478,91 -> 478,95 -> 486,95 -> 486,91 -> 483,91 -> 483,89
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
488,112 -> 501,112
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
502,34 -> 507,34
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
485,98 -> 485,101 -> 478,101 -> 478,108 -> 493,108 -> 493,101 -> 489,101 -> 489,98
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
499,134 -> 503,134
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
531,159 -> 535,159
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
534,162 -> 538,162
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
485,98 -> 485,101 -> 478,101 -> 478,108 -> 493,108 -> 493,101 -> 489,101 -> 489,98
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
525,153 -> 529,153
|
||||||
|
531,153 -> 535,153
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
492,77 -> 496,77
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
486,83 -> 490,83
|
||||||
|
492,83 -> 496,83
|
||||||
|
495,73 -> 495,74 -> 497,74 -> 497,73
|
||||||
|
528,162 -> 532,162
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
510,166 -> 510,167 -> 516,167 -> 516,166
|
||||||
|
511,130 -> 515,130
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
512,32 -> 517,32
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
519,159 -> 523,159
|
||||||
|
485,98 -> 485,101 -> 478,101 -> 478,108 -> 493,108 -> 493,101 -> 489,101 -> 489,98
|
||||||
|
540,162 -> 544,162
|
||||||
|
482,65 -> 482,67 -> 475,67 -> 475,70 -> 495,70 -> 495,67 -> 488,67 -> 488,65
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
508,132 -> 512,132
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
495,86 -> 499,86
|
||||||
|
495,73 -> 495,74 -> 497,74 -> 497,73
|
||||||
|
485,98 -> 485,101 -> 478,101 -> 478,108 -> 493,108 -> 493,101 -> 489,101 -> 489,98
|
||||||
|
484,40 -> 484,42 -> 479,42 -> 479,49 -> 496,49 -> 496,42 -> 489,42 -> 489,40
|
||||||
|
510,166 -> 510,167 -> 516,167 -> 516,166
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
483,86 -> 487,86
|
||||||
|
482,65 -> 482,67 -> 475,67 -> 475,70 -> 495,70 -> 495,67 -> 488,67 -> 488,65
|
||||||
|
482,65 -> 482,67 -> 475,67 -> 475,70 -> 495,70 -> 495,67 -> 488,67 -> 488,65
|
||||||
|
496,23 -> 496,18 -> 496,23 -> 498,23 -> 498,14 -> 498,23 -> 500,23 -> 500,22 -> 500,23 -> 502,23 -> 502,15 -> 502,23
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
|
513,147 -> 513,137 -> 513,147 -> 515,147 -> 515,140 -> 515,147 -> 517,147 -> 517,140 -> 517,147 -> 519,147 -> 519,140 -> 519,147 -> 521,147 -> 521,140 -> 521,147 -> 523,147 -> 523,141 -> 523,147 -> 525,147 -> 525,143 -> 525,147 -> 527,147 -> 527,146 -> 527,147 -> 529,147 -> 529,142 -> 529,147
|
||||||
|
517,134 -> 521,134
|
||||||
|
508,30 -> 513,30
|
||||||
|
505,130 -> 509,130
|
||||||
|
493,125 -> 493,119 -> 493,125 -> 495,125 -> 495,123 -> 495,125 -> 497,125 -> 497,124 -> 497,125 -> 499,125 -> 499,120 -> 499,125 -> 501,125 -> 501,122 -> 501,125 -> 503,125 -> 503,118 -> 503,125 -> 505,125 -> 505,121 -> 505,125 -> 507,125 -> 507,116 -> 507,125 -> 509,125 -> 509,119 -> 509,125
|
||||||
|
470,62 -> 470,60 -> 470,62 -> 472,62 -> 472,54 -> 472,62 -> 474,62 -> 474,54 -> 474,62 -> 476,62 -> 476,56 -> 476,62 -> 478,62 -> 478,60 -> 478,62 -> 480,62 -> 480,61 -> 480,62 -> 482,62 -> 482,60 -> 482,62 -> 484,62 -> 484,60 -> 484,62
|
||||||
150
advent_of_code/2022/14/src/main.rs
Normal file
150
advent_of_code/2022/14/src/main.rs
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
use std::{cmp::min, cmp::max, collections::{HashSet, HashMap}};
|
||||||
|
use nom::{
|
||||||
|
IResult,
|
||||||
|
multi::separated_list1,
|
||||||
|
character::complete::{self, multispace1},
|
||||||
|
sequence::separated_pair,
|
||||||
|
bytes::complete::tag,
|
||||||
|
};
|
||||||
|
|
||||||
|
fn parse_input(input: &str) -> IResult<&str, Vec<Vec<(u32, u32)>>> {
|
||||||
|
let (input, result) = separated_list1(
|
||||||
|
multispace1,
|
||||||
|
separated_list1(
|
||||||
|
tag(" -> "),
|
||||||
|
separated_pair(complete::u32, tag(","), complete::u32)
|
||||||
|
)
|
||||||
|
)(input)?;
|
||||||
|
|
||||||
|
Ok((input, result))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn print_coords(coords: &Vec<Vec<(u32, u32)>>) {
|
||||||
|
for line in coords {
|
||||||
|
for (c1, c2) in line {
|
||||||
|
print!("{c1},{c2} -> ");
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn coords_to_map(coords: &Vec<Vec<(u32, u32)>>) -> (HashSet<(u32, u32)>, u32) {
|
||||||
|
let mut result = HashSet::new();
|
||||||
|
let mut lowest_tile = 0;
|
||||||
|
|
||||||
|
for rock in coords {
|
||||||
|
for i in 0..rock.len() - 1 {
|
||||||
|
let start = rock[i];
|
||||||
|
let end = rock[i+1];
|
||||||
|
|
||||||
|
lowest_tile = max(max(lowest_tile, start.1), end.1);
|
||||||
|
|
||||||
|
if start.0 == end.0 {
|
||||||
|
let x = start.0;
|
||||||
|
|
||||||
|
let y_start = min(start.1, end.1);
|
||||||
|
let y_end = max(start.1, end.1);
|
||||||
|
|
||||||
|
for y in y_start..=y_end {
|
||||||
|
result.insert((x, y));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let y = start.1;
|
||||||
|
|
||||||
|
let x_start = min(start.0, end.0);
|
||||||
|
let x_end = max(start.0, end.0);
|
||||||
|
|
||||||
|
for x in x_start..=x_end {
|
||||||
|
result.insert((x,y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(result, lowest_tile)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn fill_cave(cave_map: &mut HashSet<(u32, u32)>, lowest_tile: u32) -> bool {
|
||||||
|
let mut cur = (500, 0);
|
||||||
|
|
||||||
|
loop {
|
||||||
|
if cur.1 > lowest_tile {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if !cave_map.contains(&(cur.0, cur.1 + 1)) {
|
||||||
|
cur = (cur.0, cur.1 + 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if !cave_map.contains(&(cur.0 - 1, cur.1 + 1)) {
|
||||||
|
cur = (cur.0 - 1, cur.1 + 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if !cave_map.contains(&(cur.0 + 1, cur.1 + 1)) {
|
||||||
|
cur = (cur.0 + 1, cur.1 + 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cave_map.insert(cur);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn fill_cave_with_floor(cave_map: &mut HashSet<(u32, u32)>, lowest_tile: u32) -> (u32, u32) {
|
||||||
|
let mut cur = (500, 0);
|
||||||
|
|
||||||
|
loop {
|
||||||
|
if cur.1 == lowest_tile + 1 {
|
||||||
|
cave_map.insert(cur);
|
||||||
|
return cur;
|
||||||
|
}
|
||||||
|
else if !cave_map.contains(&(cur.0, cur.1 + 1)) {
|
||||||
|
cur = (cur.0, cur.1 + 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if !cave_map.contains(&(cur.0 - 1, cur.1 + 1)) {
|
||||||
|
cur = (cur.0 - 1, cur.1 + 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if !cave_map.contains(&(cur.0 + 1, cur.1 + 1)) {
|
||||||
|
cur = (cur.0 + 1, cur.1 + 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cave_map.insert(cur);
|
||||||
|
return cur;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let input_text = include_str!("../input.txt");
|
||||||
|
let (_rest, coord_lines) = parse_input(input_text).unwrap();
|
||||||
|
|
||||||
|
// Test parsing
|
||||||
|
// print_coords(&coord_lines);
|
||||||
|
|
||||||
|
let (mut cave_map, lowest_tile) = coords_to_map(&coord_lines);
|
||||||
|
|
||||||
|
let mut units_of_sand = 0;
|
||||||
|
loop {
|
||||||
|
if !fill_cave(&mut cave_map, lowest_tile) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
units_of_sand += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Units of sand needed: {units_of_sand}");
|
||||||
|
|
||||||
|
units_of_sand = 1;
|
||||||
|
let (mut cave_map, _) = coords_to_map(&coord_lines);
|
||||||
|
loop {
|
||||||
|
if fill_cave_with_floor(&mut cave_map, lowest_tile) == (500, 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
units_of_sand += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("Units of sand needed with infinite length floor: {units_of_sand}");
|
||||||
|
}
|
||||||
2
advent_of_code/2022/14/test.txt
Normal file
2
advent_of_code/2022/14/test.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
498,4 -> 498,6 -> 496,6
|
||||||
|
503,4 -> 502,4 -> 502,9 -> 494,9
|
||||||
Reference in New Issue
Block a user