Setup + Days 1, 2, 3
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/target
|
||||||
61
Cargo.lock
generated
Normal file
61
Cargo.lock
generated
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.75"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aoc-2023"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"regex",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.6.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.10.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
|
||||||
10
Cargo.toml
Normal file
10
Cargo.toml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
[package]
|
||||||
|
name = "aoc-2023"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
anyhow = "1.0.75"
|
||||||
|
regex = "1.10.2"
|
||||||
1000
data/01.in
Normal file
1000
data/01.in
Normal file
File diff suppressed because it is too large
Load Diff
100
data/02.in
Normal file
100
data/02.in
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
Game 1: 1 green, 2 red, 6 blue; 4 red, 1 green, 3 blue; 7 blue, 5 green; 6 blue, 2 red, 1 green
|
||||||
|
Game 2: 1 green, 17 red; 1 blue, 6 red, 7 green; 2 blue, 4 red, 7 green; 1 green, 6 red, 2 blue
|
||||||
|
Game 3: 6 red, 15 blue, 15 green; 1 green, 4 red, 12 blue; 14 blue, 9 red, 1 green; 2 red, 15 blue, 12 green
|
||||||
|
Game 4: 8 green, 10 blue, 6 red; 20 blue, 4 red; 17 blue, 2 green, 3 red; 4 blue, 2 green, 3 red; 10 red, 3 blue, 3 green; 5 green, 14 blue, 6 red
|
||||||
|
Game 5: 3 green, 8 blue, 2 red; 11 red, 6 green, 11 blue; 8 red, 5 blue, 2 green
|
||||||
|
Game 6: 2 blue, 12 red, 2 green; 3 green, 2 red; 3 green, 3 blue, 10 red; 7 red, 2 blue, 4 green; 1 red, 2 blue, 5 green
|
||||||
|
Game 7: 1 red, 8 blue, 2 green; 1 red, 2 blue, 12 green; 1 blue; 3 blue, 3 green
|
||||||
|
Game 8: 10 green, 4 red, 4 blue; 12 green, 1 blue; 1 red, 13 green, 2 blue; 12 green, 3 blue; 9 green, 7 red
|
||||||
|
Game 9: 1 green, 1 blue, 3 red; 3 blue, 3 red, 8 green; 6 blue, 4 red, 6 green; 2 red, 7 green; 1 red, 10 green, 13 blue; 5 red, 1 blue, 1 green
|
||||||
|
Game 10: 9 green, 3 red, 3 blue; 12 green, 2 blue; 18 green, 1 blue; 14 green; 2 blue, 9 green, 2 red
|
||||||
|
Game 11: 14 green; 2 green, 2 red, 11 blue; 9 blue, 3 green
|
||||||
|
Game 12: 9 green, 3 blue, 8 red; 1 green, 2 blue, 3 red; 4 blue, 8 red, 10 green; 3 blue, 7 red, 8 green; 3 blue, 5 red, 7 green; 2 blue, 5 green
|
||||||
|
Game 13: 6 red, 1 blue, 10 green; 7 red, 1 green; 8 red, 2 green, 1 blue
|
||||||
|
Game 14: 2 red, 4 blue, 2 green; 2 green, 5 red, 1 blue; 1 red, 6 blue
|
||||||
|
Game 15: 7 blue, 3 red; 13 blue, 8 red, 1 green; 1 green, 5 red, 13 blue; 8 red, 5 blue; 4 red, 3 blue, 1 green; 12 blue, 8 red, 1 green
|
||||||
|
Game 16: 5 blue, 1 green, 2 red; 2 blue, 20 green; 4 blue, 1 red, 17 green; 10 green, 5 blue, 2 red
|
||||||
|
Game 17: 6 red, 13 blue, 8 green; 12 blue, 7 green, 9 red; 19 blue, 5 red; 2 green, 8 red, 14 blue
|
||||||
|
Game 18: 5 red, 2 green, 1 blue; 8 blue, 17 red, 9 green; 2 blue, 1 green; 4 blue, 10 red; 5 blue, 4 red, 6 green
|
||||||
|
Game 19: 5 red, 12 green; 8 red, 13 green, 1 blue; 1 red, 1 green, 3 blue; 5 green, 5 red
|
||||||
|
Game 20: 11 red, 8 blue; 9 red, 2 green, 13 blue; 2 red, 1 green, 2 blue; 1 green, 9 blue, 13 red; 3 blue, 5 red, 1 green
|
||||||
|
Game 21: 1 red, 4 green, 11 blue; 3 green, 15 blue; 6 green, 7 red, 14 blue; 15 blue, 6 green, 10 red; 6 red, 16 blue, 2 green
|
||||||
|
Game 22: 2 blue, 15 green, 2 red; 3 blue, 6 green, 1 red; 2 blue, 5 green, 1 red; 6 green, 2 red, 2 blue; 4 green, 2 blue; 4 blue, 1 red, 15 green
|
||||||
|
Game 23: 2 blue, 1 green, 12 red; 5 blue, 11 red, 4 green; 12 red, 4 blue; 12 red, 2 green, 5 blue
|
||||||
|
Game 24: 4 blue, 7 red; 3 red, 3 blue; 1 red, 4 blue; 2 green, 6 red, 6 blue; 7 red, 1 green, 2 blue; 6 red, 1 blue, 1 green
|
||||||
|
Game 25: 5 green, 9 blue; 6 green, 7 red, 2 blue; 1 red, 3 blue, 7 green; 9 blue, 3 red; 5 green, 9 blue, 2 red
|
||||||
|
Game 26: 6 red, 4 blue; 2 blue, 4 green; 3 green, 5 red, 5 blue; 4 green, 6 red, 3 blue; 4 green, 7 red, 4 blue
|
||||||
|
Game 27: 15 green, 1 blue, 12 red; 12 red, 1 green; 1 red, 1 blue, 5 green; 13 green, 6 red, 1 blue; 5 red, 1 blue, 1 green; 11 red, 14 green
|
||||||
|
Game 28: 3 blue, 2 green, 10 red; 5 blue, 2 green; 4 green, 3 blue, 11 red
|
||||||
|
Game 29: 10 blue, 2 red; 17 green, 7 blue, 2 red; 1 blue, 8 green, 1 red; 10 green, 2 red, 3 blue
|
||||||
|
Game 30: 10 green, 8 red, 1 blue; 4 blue, 7 green, 14 red; 2 blue, 14 red, 11 green; 1 blue, 13 green, 12 red; 5 blue, 2 red, 4 green; 4 green, 5 red
|
||||||
|
Game 31: 4 green, 11 red, 11 blue; 3 blue, 11 red; 5 blue, 7 red, 3 green; 10 blue, 5 green, 1 red
|
||||||
|
Game 32: 4 red, 8 blue, 1 green; 14 red, 7 blue, 4 green; 13 red, 3 blue, 9 green; 3 red, 1 green, 8 blue; 8 green, 8 red, 5 blue
|
||||||
|
Game 33: 6 red, 10 blue, 7 green; 19 blue, 1 red; 6 green, 11 red, 11 blue; 2 green, 2 blue, 12 red; 3 red, 13 blue, 7 green; 6 green, 4 red, 2 blue
|
||||||
|
Game 34: 3 red, 3 green, 15 blue; 7 green, 15 blue; 3 red, 2 green, 8 blue; 19 green, 18 blue
|
||||||
|
Game 35: 2 green, 1 blue; 2 green, 2 blue, 1 red; 3 blue, 1 red, 1 green; 4 blue, 1 red
|
||||||
|
Game 36: 1 red, 11 green; 1 green, 1 blue; 8 blue; 2 green, 3 red; 1 red
|
||||||
|
Game 37: 4 blue, 3 red; 12 blue, 13 red; 2 red, 2 green, 8 blue
|
||||||
|
Game 38: 8 red, 2 blue; 1 green, 2 red; 8 red, 2 green, 1 blue; 16 red, 2 green; 7 red, 2 blue, 2 green
|
||||||
|
Game 39: 6 green, 1 blue, 5 red; 14 green, 8 blue, 6 red; 8 red, 10 blue, 1 green; 14 green, 9 red; 17 blue, 5 red; 1 blue, 7 green, 1 red
|
||||||
|
Game 40: 4 red, 8 blue, 3 green; 13 blue, 1 red; 3 blue, 7 red, 3 green; 3 green, 8 blue, 10 red; 3 green, 20 blue, 5 red
|
||||||
|
Game 41: 1 blue, 2 green; 11 green, 2 blue; 5 blue; 15 red, 8 green, 5 blue
|
||||||
|
Game 42: 1 green, 12 blue, 1 red; 6 blue, 1 green, 5 red; 1 red, 11 blue, 4 green; 3 red, 17 blue, 1 green; 1 red, 11 blue; 9 blue, 6 green, 3 red
|
||||||
|
Game 43: 16 blue, 13 green, 1 red; 17 blue, 7 red, 10 green; 13 green, 5 red, 7 blue
|
||||||
|
Game 44: 2 blue, 4 red; 15 green, 7 red; 2 green, 1 blue; 6 red, 13 green
|
||||||
|
Game 45: 5 green, 1 blue, 8 red; 4 red, 1 blue, 5 green; 1 green, 3 red; 1 green, 2 blue, 6 red; 4 red, 3 green, 2 blue; 2 red, 2 blue, 5 green
|
||||||
|
Game 46: 1 green, 1 red, 6 blue; 11 blue; 1 red, 1 green, 7 blue; 8 blue; 1 green, 7 blue, 2 red
|
||||||
|
Game 47: 7 green, 9 blue, 7 red; 11 red, 13 blue, 5 green; 12 green, 12 blue, 5 red; 4 blue, 8 green, 7 red
|
||||||
|
Game 48: 11 green, 7 red, 2 blue; 2 blue, 10 green, 3 red; 1 blue, 2 red, 1 green; 4 green, 2 red, 7 blue; 7 red, 4 green, 2 blue
|
||||||
|
Game 49: 1 red, 2 blue, 5 green; 2 green, 4 blue; 5 blue, 2 green, 1 red; 9 blue, 1 green; 7 blue
|
||||||
|
Game 50: 8 green, 9 blue, 2 red; 2 green, 5 blue; 14 green, 1 red, 8 blue
|
||||||
|
Game 51: 1 green, 2 blue; 12 blue, 1 red; 2 blue
|
||||||
|
Game 52: 3 red, 2 blue, 2 green; 4 red, 4 green, 7 blue; 2 blue, 4 red, 1 green; 3 green; 1 red, 9 green, 7 blue
|
||||||
|
Game 53: 9 blue, 12 red, 7 green; 8 blue, 6 green; 1 green, 8 blue, 9 red; 12 red, 6 green; 9 blue, 14 red, 10 green; 7 red, 3 green, 5 blue
|
||||||
|
Game 54: 8 green, 5 blue, 5 red; 4 green, 13 blue, 2 red; 2 blue, 5 red, 1 green; 3 red, 3 green, 10 blue
|
||||||
|
Game 55: 17 red, 15 green, 17 blue; 6 red, 5 green, 7 blue; 17 green, 6 blue, 5 red
|
||||||
|
Game 56: 7 blue, 6 red, 7 green; 10 green, 3 red; 9 red, 3 blue, 5 green
|
||||||
|
Game 57: 5 blue, 11 red, 1 green; 13 red, 1 green, 2 blue; 2 blue, 4 red; 1 green, 10 red, 1 blue; 1 green, 8 red
|
||||||
|
Game 58: 1 red, 2 green, 9 blue; 1 green, 1 blue, 1 red; 2 red, 6 blue, 2 green; 14 blue, 1 green, 1 red; 5 blue, 1 red, 2 green; 14 blue, 2 green
|
||||||
|
Game 59: 9 green, 2 blue, 5 red; 9 red, 5 green; 10 red, 1 blue, 8 green
|
||||||
|
Game 60: 8 blue, 6 red, 4 green; 3 red, 12 green, 9 blue; 4 blue, 5 red, 5 green; 4 red, 8 blue; 7 green, 12 blue, 6 red
|
||||||
|
Game 61: 5 blue, 13 red, 1 green; 5 red, 5 blue; 1 red, 3 blue; 1 green, 9 red; 10 red, 3 blue, 1 green
|
||||||
|
Game 62: 1 blue, 13 red; 4 blue, 5 red; 11 blue, 8 red, 1 green
|
||||||
|
Game 63: 14 blue, 5 red; 9 blue, 14 green, 5 red; 3 red, 8 green, 15 blue; 4 blue, 15 green, 6 red
|
||||||
|
Game 64: 13 red, 6 blue, 11 green; 12 red, 1 blue, 8 green; 1 red, 17 green; 13 red, 12 green, 7 blue
|
||||||
|
Game 65: 4 red, 17 blue, 3 green; 2 green, 12 blue, 9 red; 2 green, 17 blue, 5 red; 1 red, 1 green, 4 blue; 9 red, 16 blue; 7 blue, 9 red
|
||||||
|
Game 66: 10 blue, 10 green, 5 red; 10 green, 3 blue, 5 red; 1 red, 1 green, 10 blue; 2 green, 5 red, 20 blue; 8 blue, 11 green, 13 red; 2 green, 18 blue, 2 red
|
||||||
|
Game 67: 6 red, 1 green; 5 red, 10 blue; 6 blue, 6 red
|
||||||
|
Game 68: 4 green, 1 red, 5 blue; 5 red, 5 blue; 7 red, 6 green; 8 red, 1 blue
|
||||||
|
Game 69: 2 blue, 11 red; 4 red, 6 green, 1 blue; 4 red, 1 blue, 14 green
|
||||||
|
Game 70: 15 red, 8 blue, 5 green; 5 green, 2 red, 8 blue; 8 red, 3 green, 10 blue
|
||||||
|
Game 71: 4 blue, 2 red; 12 green, 4 blue; 10 green
|
||||||
|
Game 72: 3 blue, 4 green, 6 red; 6 red, 5 green, 8 blue; 10 red, 6 green, 5 blue; 1 green, 2 blue; 10 red, 5 blue, 4 green
|
||||||
|
Game 73: 5 blue, 1 red; 1 green, 11 blue; 10 blue; 12 blue, 1 red; 1 red, 9 blue; 7 blue, 1 green, 1 red
|
||||||
|
Game 74: 7 green, 6 blue, 7 red; 7 blue, 6 green, 15 red; 7 red, 5 blue, 1 green; 1 blue, 6 red, 8 green; 8 green, 14 red, 3 blue
|
||||||
|
Game 75: 8 green, 3 red, 3 blue; 1 blue, 6 red, 7 green; 9 green, 3 blue; 3 blue, 9 green, 6 red; 4 blue, 1 red, 3 green; 4 green, 1 blue, 16 red
|
||||||
|
Game 76: 4 blue, 3 green; 2 blue, 1 red, 6 green; 12 blue; 1 green, 14 blue
|
||||||
|
Game 77: 5 green, 10 red, 11 blue; 3 red; 8 green, 6 red, 9 blue
|
||||||
|
Game 78: 7 red, 7 green; 8 blue; 6 green, 7 red, 5 blue
|
||||||
|
Game 79: 11 blue, 2 red, 4 green; 2 green, 3 red, 15 blue; 1 green, 15 blue, 1 red
|
||||||
|
Game 80: 3 red, 17 green, 8 blue; 8 green, 10 blue; 4 green, 1 red, 14 blue
|
||||||
|
Game 81: 17 green, 10 red, 10 blue; 9 green, 9 blue, 7 red; 11 red, 11 green, 4 blue; 15 blue, 5 red; 11 blue, 8 green, 15 red; 3 green, 16 red
|
||||||
|
Game 82: 8 green, 9 blue, 1 red; 1 red, 8 green, 9 blue; 2 green, 12 blue
|
||||||
|
Game 83: 2 green, 11 red, 20 blue; 20 blue, 1 green, 4 red; 2 green, 6 red, 20 blue; 17 blue, 10 red
|
||||||
|
Game 84: 1 green, 9 red; 4 blue, 4 green; 1 green, 6 red, 14 blue
|
||||||
|
Game 85: 5 red, 10 green, 9 blue; 8 blue, 3 green, 2 red; 4 blue, 14 green, 3 red; 5 red, 4 blue
|
||||||
|
Game 86: 8 blue, 9 green, 5 red; 5 red, 10 green, 1 blue; 15 blue, 1 red, 2 green; 8 red, 8 blue, 10 green
|
||||||
|
Game 87: 13 green, 2 red, 4 blue; 3 red, 11 green, 9 blue; 6 blue, 3 red, 12 green
|
||||||
|
Game 88: 2 red, 7 blue, 3 green; 2 blue, 9 red; 9 red, 6 blue, 7 green; 6 green, 13 blue, 9 red; 6 green, 2 red, 15 blue; 1 red, 8 green, 7 blue
|
||||||
|
Game 89: 11 red, 1 blue, 2 green; 6 blue, 5 green, 4 red; 15 red, 4 green, 5 blue; 11 red, 3 blue, 10 green; 6 blue, 13 green, 12 red
|
||||||
|
Game 90: 2 red, 2 blue, 4 green; 2 red, 2 blue; 9 green, 1 red, 1 blue; 5 green, 1 red; 7 green, 2 red; 2 green, 1 blue
|
||||||
|
Game 91: 5 blue, 3 red, 1 green; 1 red, 4 blue, 6 green; 6 blue, 6 green, 5 red
|
||||||
|
Game 92: 16 green, 1 blue, 12 red; 18 green, 14 red, 1 blue; 16 red, 1 green; 4 blue, 16 red, 18 green
|
||||||
|
Game 93: 9 red, 8 blue, 14 green; 1 blue, 1 green, 6 red; 4 blue, 4 red, 14 green
|
||||||
|
Game 94: 11 green, 4 blue, 2 red; 1 red, 1 green, 1 blue; 4 red, 1 blue, 2 green
|
||||||
|
Game 95: 5 blue, 2 red, 9 green; 5 blue, 8 green; 1 green, 15 blue; 5 red, 9 green, 5 blue; 3 green, 17 blue, 5 red
|
||||||
|
Game 96: 2 green, 14 blue, 1 red; 3 green, 3 red, 14 blue; 2 red, 2 green, 13 blue
|
||||||
|
Game 97: 2 green, 2 red; 2 blue, 1 green; 7 blue, 3 red
|
||||||
|
Game 98: 2 red, 1 blue, 12 green; 2 blue, 10 green, 5 red; 11 green, 9 blue; 6 blue, 17 green; 7 blue, 9 green, 9 red; 1 red, 11 green, 9 blue
|
||||||
|
Game 99: 2 green, 9 red, 1 blue; 3 green, 1 blue, 14 red; 5 green, 6 blue; 1 blue, 2 green, 3 red; 4 blue, 10 red, 1 green
|
||||||
|
Game 100: 4 green, 4 blue, 15 red; 3 green, 1 red, 13 blue; 5 green, 5 blue, 10 red
|
||||||
140
data/03.in
Normal file
140
data/03.in
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
311...672...34...391.....591......828.......................738....................223....803..472..................................714.840.
|
||||||
|
.......*...........*.....*...........*........631%...703.......*..12....652.................*.$............368.769*148.................*....
|
||||||
|
....411...........2....837.121........511.745...........*.48.422.@.........@.............311........887......*................457........595
|
||||||
|
........*328...............&..........................144.*...................138............48.......*......682.........@...*.......777....
|
||||||
|
.....144.....+........170...................207............813..../.&....139..*.....346........*..147..143.+.....78....536..79........*.....
|
||||||
|
...........828...559.................181...%..........613.......10...928...*...993.+.........758.*.........471...#../...............573.....
|
||||||
|
....................*164...132..........*........=.......*.................47.........186.........313..............411......................
|
||||||
|
...............342............+..823.....533....519.....899...310................@........325...........15....................407.....#.....
|
||||||
|
515......916......*.@...........*.............................*......961.........827......*.......=.........567....=238...874*.......420....
|
||||||
|
...=.......*...207...882......719....455.973...................369...*.....*913........978...%..720..........-..............................
|
||||||
|
........306................................................182.....534......................229........744.........+.....=..........918.....
|
||||||
|
303...........745...........361..............223..243.129.....=.................830.....%.................%......493....106............&....
|
||||||
|
.................*209..17.........494.910................*90....496.....709......&....896...................................................
|
||||||
|
....%..562............*.....@...........*..528.......321...........*673......................887..%231...............700..............116...
|
||||||
|
.988..=....944...596........806...24..519./..........*......../...............146...........*...................554..*......................
|
||||||
|
..........$.......................................822...621..771..151.504.......*.628*343..34...+.&..............*..329.303..641..678..+....
|
||||||
|
........................361.....347*524..538...........*.........*.....-......790.............933..724......699...........*....*........262.
|
||||||
|
.716..517...+..........*................*......955$..544.....238..593.....399.......#..=...................*...........241.....930..........
|
||||||
|
...%.+.......744....550..........#131....964.............234..*.............*.....856..809..450....%....332.....419..................389....
|
||||||
|
........264...............798......................816....%....228.......501..224........../.......645.............*499.....*.......*.......
|
||||||
|
.......*.......939........*.....@..............795*..............................*........................789................907.....647....
|
||||||
|
.....612..........*.612..291..592........#.................567...................391.........................*....387............64.........
|
||||||
|
................24.....*.................814......=........$......./....346................444............833....*..........845...*.........
|
||||||
|
...........303.........605..326.....108.......%..56..842=.....*....387...*..478-..272=....*..........#........778.....299=..@...722.........
|
||||||
|
......484=..=.....753..........$......+.....449...............559.......144.............695.........675..................................253
|
||||||
|
...-...............*.........*................................................................987.......200......*......445.......124...*...
|
||||||
|
....825............603....544.634........................432...=875...738...............731..*.............&..488.363..*.....663.........876
|
||||||
|
........755.................................#............-............/.............*....*....470..314.145..............277...@.....234-....
|
||||||
|
....323.........221..............892...284..473.....44......342.622.........707....413...984..........*....../..............................
|
||||||
|
..............$....*..............*...&........................*.......351%...*.............................226..........155....973+........
|
||||||
|
...............177.991..........268.............532=......./.....277........183......*935.........917....*........825.....-.................
|
||||||
|
.....+.%................#...413........304...............384....*.................748........./....*...955.......#...........885.970........
|
||||||
|
...44...627..........368.../...........=.........................314..293...................102..108............................*...........
|
||||||
|
......=.........................=........733..433...128..............*.......889...........................661.........-358...$....281......
|
||||||
|
.....35..........$...........834.../699...../.-......................461.......-........*...................*..................374....=.#412
|
||||||
|
............763..201..$............................392........341........96......723.340.........327.736...1..$897.....471..................
|
||||||
|
.....*512..*.........221.............125$....257.....@.....................*.277.*................*...*................................@....
|
||||||
|
..301......694..............54.............../.........611...............596.../..100.......164.801....596..490....&361.........415....412..
|
||||||
|
..................243...927*.........29*293........645*.......862*2...........................=............*.....................*..$.......
|
||||||
|
............$......&.........655.906...........500....................125.613..844.........@......435......984....725-..531.....711..79.....
|
||||||
|
...817...450.....................*........431...%........................*..........957.....739..*.....................*....................
|
||||||
|
.....#........237......122.66.942............*.........548..................506.435...............73.883............644...101...............
|
||||||
|
.863.............*......&..*..................98..283........532......750..............*........#.......+....594*...........................
|
||||||
|
....*.........451.........623.....*....*...........&............%..50*.......44.....123......951.................62.943......365...995......
|
||||||
|
.639..............827.265......132..354.127...........350....................*..........................11..........*....%...*..............
|
||||||
|
........41..#175....@...*..*.....................+......*..247.353...#.....44.....912-......757...............144..481.693.271.........993..
|
||||||
|
.........*.............993.707...857*...........375.....90...@...*..386.......403.............*..................*..............208....=....
|
||||||
|
.......343.437....391..........&.....117....637.....345.........43.......*662..@...........908.........956.......908.............&..........
|
||||||
|
389.............&...........670.............$...42.....*...=..........564................................%...............+..................
|
||||||
|
...*............435....*.............913..............574..149.......................962....................953...77..641....514............
|
||||||
|
....448.....783.....892..381.....593.*.........................403*149................%..863*954....373-..+........*...........*.+...663....
|
||||||
|
906........................#......*...922.........950......................993...3.........................379....450.......877..804.#......
|
||||||
|
...............768.......*......-.198.........160*............820......382...*......169.........*555..257...................................
|
||||||
|
260..............*.....68.....281.......871...................*...980......875.......*.......169........*.............531......@............
|
||||||
|
....*......@.....587...................#......48..251..316@...848..................303................931..132..............790.............
|
||||||
|
.....205...572................696........&.....@.....@............709..611.............=.......270........*....165......783.......790.......
|
||||||
|
......................965.........709..826....................882*......%..775.........391....*......985.5........*179.....*47.......&......
|
||||||
|
.....451............@................#..................804..................$..161...........837..............*................$904....176.
|
||||||
|
720.................70..........899.....868..............=.......357.252.......*..................707.......898.139.....704............*....
|
||||||
|
....................................307*....510..................*.....*.......17..501.............*................@....*..........855.....
|
||||||
|
.............745............451................*..689..980..@670.594.716..........*.................565......595..622.....793...............
|
||||||
|
.....890......$...73...422...*...977&.......324..%.......@................29.......945....*.............298-..................#.........#642
|
||||||
|
........*........*....%......................................$645......-...*...150.....434.259..609*560....../............266..524..../.....
|
||||||
|
.....203..........133.....596.619.................*...............676.107..811...*...........................115...........*.........178....
|
||||||
|
............................=..*...............157.682.......262..*............196......$..........707................14..386...............
|
||||||
|
.........871............605....721...........................*...867.................685..866.......*.............602...............628.....
|
||||||
|
......#.....*....413.......@.......380....872................372.......277......277.........*.......166...........@..........656....*....748
|
||||||
|
.....841..664.......*.422............................945...........%............*.........959.863.........187........299.......*.....887....
|
||||||
|
.708..............311....+..296*497.....751...639....*..........269..........875....%.........................-.................36..........
|
||||||
|
.........834..............................@...........708...........................87....298..*471.....$.....463...........................
|
||||||
|
............+...739..........701........................................779................=.........265..642...............................
|
||||||
|
......504..........*...............871*314....127..36..639.196..48..................96......../785.........*..854=.....607=...542...........
|
||||||
|
...73............254.591.........................*..$.....*......*.........35......*...@................150...................-........340..
|
||||||
|
........224............/....*214...=..........949..............455.........*.......377.88....................823......582.............*.....
|
||||||
|
.......*.......643.......901........191..267.......293...................194..266.................987.......*........&....+.........545.....
|
||||||
|
....604...583.....*............*742........*.........*........$..................*..365............*....=...880.55......540.520#............
|
||||||
|
............*..272.....843..201.....*....&.128..+....433.......563......281*77.540.+.......979&..134....514.......*..............46.........
|
||||||
|
...966.....67.......................19.934......224..........#....................................................693............*.....525..
|
||||||
|
....*.........188.....904......*..............................210....*958.........811...............574....965................288..20.$.....
|
||||||
|
..213.........*...137*.......325.....628..................406......34..............*.......406...$.*.........*.........867..........*.......
|
||||||
|
...........810............................*.....926.........*..............372.....372.....*...266.716........985......*.............1......
|
||||||
|
...............399*126.....*.......*...379..729.+........245.........893....-..866.....101.299..........8.544........784....................
|
||||||
|
954......................63.501.529........-.......695/.................................*..........320....................211.55...533......
|
||||||
|
............457..........................=.......................375#..........961*......720......*...............542........*.....+...327..
|
||||||
|
........396...*.476.774.680.189@.438......669............936.......................195.......405.926.213.....254.....*.................*....
|
||||||
|
...-.......-.......*.....&...........$........22....732.*.......$121.200...............-.......*........*.............522.825..77...........
|
||||||
|
....272..............#............925.....378*......&....53.............*....605.....329.116..501..=.765......537.680......*..*.........#...
|
||||||
|
817........109....209...........................690...................573...&............/........48...........*.....*..169...581.......537.
|
||||||
|
...=..747.............171.70.........990........*..............529.............482.....................383......531.53.............#211.....
|
||||||
|
......*.....470........*...*.812.664.=.......141.....82...888...*.................@.312....9*860...........529............./...952..........
|
||||||
|
.....906...*....810...966....*.....*.....................*.......616........327-.....*...............................80.655.................
|
||||||
|
323......459......@.........185.....894..891..........254.................................938.........262........602*.......................
|
||||||
|
.............110.........................$......*55..........155..................248*600.....66........*...............*......75..880......
|
||||||
|
.....459...........928...............................*900.....@.....27............................526....434.402.....840.816.......*........
|
||||||
|
......*........241....*...70.465...668....110=....905...........252..*..............%..........74.............*.................817...290...
|
||||||
|
.540...224........*.42......*........*.................705.......*..128...&.758=.512...884.....*..648*.......259.......486.627.......*......
|
||||||
|
....*..........467................462..321....296*211.*........283......488...........%......796......774.............%.......+.200.87......
|
||||||
|
...663..............$961..579...........................*...................189..........71................420..57...............*..........
|
||||||
|
...........617.645...........*........700..886...806.581.610.....132.379.......$......+....-..941$.....................504....589........528
|
||||||
|
......377.......+.....290...221..768.....*....&....&................*.................556..............132.............*....................
|
||||||
|
......................+.............*152.448............903.....339.....=.......709............991.......*.............865..................
|
||||||
|
....-.....$717.............552................40..458....*.....*......365.......-......762.732...*.....690.266.....222............122.......
|
||||||
|
.414...........496...+.712..*...=....785.........*.......79...884.991................/....*.....844..-........@....*...782...........*627...
|
||||||
|
.......$........%..560..*...873..739..#........368.991......*.....*.....27..........951..............864.........206...*...878..............
|
||||||
|
.....231..995...........865................602......*....379.609.935...+......643................952.....@...........884...*................
|
||||||
|
.............$....726........360..........=.................................................*990.+........959............932................
|
||||||
|
.....................+.508.....=...194.......*30........./...........487......171...243..709........495.........995.464.......997...........
|
||||||
|
......292..............$.............*....253.........*.554...........*......../......................*.........*....%......*....*582.446...
|
||||||
|
...........802.....237.....*32...286.259............132.....236......683.....&.......................705...$855.37.....=...476.........*....
|
||||||
|
.....418=.............*.664........*..........*11............$.....=.....70.380....138.....416.609..................452........43...156..260
|
||||||
|
....................20..........512........303.....-................491...*.......*.........*..&..........&962..........*......#........-...
|
||||||
|
426.646....833...........821....................348.......537...668........92.....295.....620...................147=.753....................
|
||||||
|
......*.....*..................210.681...................$..........937.......350......................533............................+.....
|
||||||
|
.65...22..656...#........*44...*.......178*.........446.........655..............*592.....952-.....680..*...........=..305#............704..
|
||||||
|
...*.............422..835......126.........552.......*....543..........-....444.......995.........=.....771........480.........782..........
|
||||||
|
............28............983$...........5............953.&.......216..749....=..........-....................232...........................
|
||||||
|
.....................878................*.........426...............*.........................$........792%..*....898......264...39.........
|
||||||
|
...480.....674..149+...................740......#....*251..920.......552......................713...........639.......917.........*.........
|
||||||
|
...+........+...................$951..........*..968.......*............................................750.......479............770.959....
|
||||||
|
...............424..54*489..+...........14..355...........782...50................900.770..........639.....&.942.....*39.....477........+...
|
||||||
|
....888.....................412................................*...%123...579...../....&.....315.....#..........*..............*..66........
|
||||||
|
......*..........................793..402.......*807...854@...115........................=...*...204.......208..928..........121............
|
||||||
|
...........880=.818......982......*......*...923.......................................809.962...*.........&................................
|
||||||
|
...957*511.........*436..@......704.......................-......../....84/...369.496..........917.....................464..................
|
||||||
|
............................812.........785*...............848..506..................*116................=..#...............................
|
||||||
|
..........694..257..876.....................15.........176.............................................593...168...914.230-.200.........500.
|
||||||
|
...427...&.....*..........................................*.............=...%....233..616&....299*.................-....................=...
|
||||||
|
......&......598............571/....60.........897.......911....34....106...713.@.............................933..........288..............
|
||||||
|
..314...............563...&...........*...........*............*......................198........................*............*591....246...
|
||||||
|
....*......274.875.....+.114...........105.763..319...................*730.....158.....................487.......505........................
|
||||||
|
.439..........*......................*........*.......595.190.173..653............*...882.812.....*230..-............522....=.......192.....
|
||||||
|
................554...825...845...797.572..814.......*.......*............*....167.......*.....581...................-.......330.......#....
|
||||||
|
.......82......*......$....#.........................318...............326.924......880....288..........*.....44.....................+......
|
||||||
|
.....-...-....526.........................=981...........959....................*.............*......915.116.*....$...=..............577....
|
||||||
|
..130..............................@330..............414.*....679........999.344.611.......432..................690....502..................
|
||||||
|
.............476...#.........................................&.............%...........303.....731.........681..............................
|
||||||
|
....@791....*....152....397....*.....975............904................225...............*.......$........&.....169.207.....................
|
||||||
|
..........995...........&...558.857.......141..803.%....-........199.....*......573..63..315................*...........519.................
|
||||||
|
......................................158*....*........737.........%....399....*..................#47....100................574...#333......
|
||||||
|
..........56............822..................665............................563..383........................................................
|
||||||
26
flake.lock
generated
Normal file
26
flake.lock
generated
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701068326,
|
||||||
|
"narHash": "sha256-vmMceA+q6hG1yrjb+MP8T0YFDQIrW3bl45e7z24IEts=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8cfef6986adfb599ba379ae53c9f5631ecd2fd9c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
27
flake.nix
Normal file
27
flake.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
description = "Advent Of Code 2023";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
|
||||||
|
forAllSystems = function:
|
||||||
|
nixpkgs.lib.genAttrs [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
] (system: function nixpkgs.legacyPackages.${system});
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
devShells = forAllSystems (pkgs: with pkgs; {
|
||||||
|
default = mkShell {
|
||||||
|
nativeBuildInputs = [ rustc cargo ];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
60
src/bin/day01.rs
Normal file
60
src/bin/day01.rs
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use anyhow::{Context, Result};
|
||||||
|
|
||||||
|
fn p1(line: &str) -> Option<u32> {
|
||||||
|
let digits = line.chars().filter_map(|a| a.to_digit(10));
|
||||||
|
|
||||||
|
let first = digits.clone().next()?;
|
||||||
|
let last = digits.rev().next()?;
|
||||||
|
|
||||||
|
Some(first * 10 + last)
|
||||||
|
}
|
||||||
|
|
||||||
|
const DIGIT_NAMES: [&'static str; 9] = [
|
||||||
|
"one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
|
||||||
|
];
|
||||||
|
|
||||||
|
const REV_DIGIT_NAMES: [&'static str; 9] = [
|
||||||
|
"eno", "owt", "eerht", "ruof", "evif", "xis", "neves", "thgie", "enin",
|
||||||
|
];
|
||||||
|
|
||||||
|
fn find_first_digit(line: &str, digit_names: &[&'static str; 9]) -> Option<usize> {
|
||||||
|
let digit_char_position = line.as_bytes().iter().position(u8::is_ascii_digit)?;
|
||||||
|
|
||||||
|
let digit_value = usize::from(line.as_bytes()[digit_char_position] - b'0');
|
||||||
|
|
||||||
|
(0..digit_char_position)
|
||||||
|
.find_map(|start| {
|
||||||
|
let sliced = &line[start..];
|
||||||
|
digit_names
|
||||||
|
.into_iter()
|
||||||
|
.position(|&digit_name| sliced.starts_with(digit_name))
|
||||||
|
.map(|v| v + 1)
|
||||||
|
})
|
||||||
|
.or(Some(digit_value))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn p2(line: &str) -> Option<usize> {
|
||||||
|
let first = find_first_digit(line, &DIGIT_NAMES)?;
|
||||||
|
let rev_line = line.chars().rev().collect::<String>();
|
||||||
|
let last = find_first_digit(rev_line.as_str(), &REV_DIGIT_NAMES)?;
|
||||||
|
|
||||||
|
Some(first * 10 + last)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> Result<()> {
|
||||||
|
let filename = env::args()
|
||||||
|
.nth(1)
|
||||||
|
.context("./day01 <path to puzzle input")?;
|
||||||
|
let input = fs::read_to_string(filename)?;
|
||||||
|
|
||||||
|
let ans1: u32 = input.lines().map(|line| p1(line).unwrap()).sum();
|
||||||
|
let ans2: usize = input.lines().map(|line| p2(line).unwrap()).sum();
|
||||||
|
|
||||||
|
println!("1) {}", ans1);
|
||||||
|
println!("2) {}", ans2);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
48
src/bin/day02.rs
Normal file
48
src/bin/day02.rs
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use anyhow::{Context, Result};
|
||||||
|
|
||||||
|
const MALFORMED: &str = "malformed input.";
|
||||||
|
|
||||||
|
fn main() -> Result<()> {
|
||||||
|
let filename = env::args()
|
||||||
|
.nth(1)
|
||||||
|
.context("./day02 <path to puzzle input>")?;
|
||||||
|
let input = fs::read_to_string(filename)?;
|
||||||
|
|
||||||
|
let mut part1 = 0;
|
||||||
|
let mut part2 = 0;
|
||||||
|
|
||||||
|
for line in input.lines() {
|
||||||
|
let (game_name, game) = line.split_once(": ").context(MALFORMED)?;
|
||||||
|
let game_id: usize = game_name.split_once(' ').context(MALFORMED)?.1.parse()?;
|
||||||
|
|
||||||
|
let mut draw_max = (0u32, 0u32, 0u32);
|
||||||
|
|
||||||
|
for draw in game.split("; ") {
|
||||||
|
for color in draw.split(", ") {
|
||||||
|
let (count_str, color) = color.split_once(' ').context(MALFORMED)?;
|
||||||
|
let count: u32 = count_str.parse()?;
|
||||||
|
|
||||||
|
match color {
|
||||||
|
"red" => draw_max.0 = draw_max.0.max(count),
|
||||||
|
"green" => draw_max.1 = draw_max.1.max(count),
|
||||||
|
"blue" => draw_max.2 = draw_max.2.max(count),
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if draw_max.0 <= 12 && draw_max.1 <= 13 && draw_max.2 <= 14 {
|
||||||
|
part1 += game_id
|
||||||
|
}
|
||||||
|
|
||||||
|
part2 += draw_max.0 * draw_max.1 * draw_max.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("1) {}", part1);
|
||||||
|
println!("2) {}", part2);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
62
src/bin/day03.rs
Normal file
62
src/bin/day03.rs
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use regex::bytes::Regex;
|
||||||
|
|
||||||
|
use anyhow::{Context, Result};
|
||||||
|
|
||||||
|
fn main() -> Result<()> {
|
||||||
|
let filename = env::args()
|
||||||
|
.nth(1)
|
||||||
|
.context("./day03 <path to puzzle input>")?;
|
||||||
|
let input = fs::read_to_string(filename)?;
|
||||||
|
let lines = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.as_bytes())
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let number_re = Regex::new(r"\d+")?;
|
||||||
|
|
||||||
|
let h = lines.len();
|
||||||
|
let w = lines[0].len();
|
||||||
|
|
||||||
|
let is_symbol = |c: u8| !c.is_ascii_digit() && c != b'.';
|
||||||
|
|
||||||
|
let mut part1: usize = 0;
|
||||||
|
let mut gears: HashMap<(usize, usize), Vec<_>> = HashMap::new();
|
||||||
|
for (row, line) in lines.iter().enumerate() {
|
||||||
|
for number_str in number_re.find_iter(line) {
|
||||||
|
let value = std::str::from_utf8(number_str.as_bytes())?.parse::<usize>()?;
|
||||||
|
|
||||||
|
let mut has_symbol_neighbour = false;
|
||||||
|
|
||||||
|
for x in [row.saturating_sub(1), row, row + 1] {
|
||||||
|
for y in number_str.start().saturating_sub(1)..=number_str.end() {
|
||||||
|
if x < h && y < w {
|
||||||
|
has_symbol_neighbour |= is_symbol(lines[x][y]);
|
||||||
|
|
||||||
|
if lines[x][y] == b'*' {
|
||||||
|
gears.entry((x, y)).or_default().push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if has_symbol_neighbour {
|
||||||
|
part1 += value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let part2: usize = gears
|
||||||
|
.values()
|
||||||
|
.filter(|v| v.len() == 2)
|
||||||
|
.map(|v| v[0] * v[1])
|
||||||
|
.sum();
|
||||||
|
|
||||||
|
println!("1) {}", part1);
|
||||||
|
println!("2) {}", part2);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
83
src/main.rs
Normal file
83
src/main.rs
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
// fn part2(line: &str) -> (u32, u32) {
|
||||||
|
// (0, 0)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn part1(line: &str) -> (u32, u32) {
|
||||||
|
// let mut digits = line.chars()
|
||||||
|
// .filter_map(|a| a.to_digit(10));
|
||||||
|
|
||||||
|
// let d1 = digits.next().unwrap();
|
||||||
|
|
||||||
|
// (d1, digits.last().unwrap_or(d1))
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
fn possible(line: &str) -> (bool, u32) {
|
||||||
|
let a = line.split(':').collect::<Vec<_>>()[1].trim();
|
||||||
|
|
||||||
|
let mut power = [0, 0, 0];
|
||||||
|
|
||||||
|
let mut possible = true;
|
||||||
|
|
||||||
|
for game in a.split(';') {
|
||||||
|
let game = game.trim();
|
||||||
|
let parts = game.split(',');
|
||||||
|
let mut l = [0,0,0];
|
||||||
|
|
||||||
|
for part in parts {
|
||||||
|
let part = part.trim();
|
||||||
|
let num = part.split(' ').next().unwrap().parse::<u32>().unwrap();
|
||||||
|
|
||||||
|
if part.ends_with("red") {
|
||||||
|
l[0] += num;
|
||||||
|
power[0] = power[0].max(num);
|
||||||
|
} else if part.ends_with("green") {
|
||||||
|
l[1] += num;
|
||||||
|
power[1] = power[1].max(num);
|
||||||
|
} else if part.ends_with ("blue") {
|
||||||
|
l[2] += num;
|
||||||
|
power[2] = power[2].max(num);
|
||||||
|
} else {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if l[0] > 12 || l[1] > 13 || l[2] > 14 {
|
||||||
|
possible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(true, power[0] * power[1] * power[2])
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let contents = fs::read_to_string("./data/2.in").expect("");
|
||||||
|
let ans= contents.lines().enumerate().filter(|(_, line)| possible(line).0).map(|(i, _)| i+1).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let ans2: u32 = contents.lines().map(|line| possible(line).1).sum();
|
||||||
|
|
||||||
|
println!("{:?}", ans2);
|
||||||
|
// let contents = fs::read_to_string("./data/1.in").expect("");
|
||||||
|
// let data = contents.lines().map(|line| {
|
||||||
|
// let b = line.to_string()
|
||||||
|
// .replace("one", "one1one")
|
||||||
|
// .replace("two", "two2two")
|
||||||
|
// .replace("three", "three3three")
|
||||||
|
// .replace("four", "four4four")
|
||||||
|
// .replace("five", "five5five")
|
||||||
|
// .replace("six", "six6six")
|
||||||
|
// .replace("seven", "seven7seven")
|
||||||
|
// .replace("eight", "eight8eight")
|
||||||
|
// .replace("nine", "nine9nine");
|
||||||
|
|
||||||
|
// let it = b.chars().filter(|a| a.is_digit(10)).collect::<Vec<_>>();
|
||||||
|
// (it[0], it[it.len() - 1])
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// let ans: u32 = data.map(|(c1, c2)| c1.to_digit(10).unwrap() * 10 + c2.to_digit(10).unwrap()).sum();
|
||||||
|
// println!("{:?}", ans);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user