Finished day 14 advent of code

This commit is contained in:
2023-01-10 16:38:39 +01:00
parent 8da7d3d1a8
commit 826bdd6db3
5 changed files with 366 additions and 0 deletions

32
advent_of_code/2022/14/Cargo.lock generated Normal file
View 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",
]

View 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"

View 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

View 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}");
}

View File

@@ -0,0 +1,2 @@
498,4 -> 498,6 -> 496,6
503,4 -> 502,4 -> 502,9 -> 494,9