diff --git a/Cargo.lock b/Cargo.lock index c91cf45..c2bc83a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,6 +6,10 @@ version = 3 name = "day01" version = "0.1.0" +[[package]] +name = "day02" +version = "0.1.0" + [[package]] name = "tiesto" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 1b89567..668653a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,27 +4,27 @@ members = [ "tiesto", "day01", "day02", - "day03", - "day04", - "day05", - "day06", - "day07", - "day08", - "day09", - "day10", - "day11", - "day12", - "day13", - "day14", - "day15", - "day16", - "day17", - "day18", - "day19", - "day20", - "day21", - "day22", - "day23", - "day24", - "day25", +# "day03", +# "day04", +# "day05", +# "day06", +# "day07", +# "day08", +# "day09", +# "day10", +# "day11", +# "day12", +# "day13", +# "day14", +# "day15", +# "day16", +# "day17", +# "day18", +# "day19", +# "day20", +# "day21", +# "day22", +# "day23", +# "day24", +# "day25", ] diff --git a/day02/Cargo.toml b/day02/Cargo.toml new file mode 100644 index 0000000..843335d --- /dev/null +++ b/day02/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day02" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day02/input.txt b/day02/input.txt new file mode 100644 index 0000000..b955ddb --- /dev/null +++ b/day02/input.txt @@ -0,0 +1,2500 @@ +A Z +A Z +A Z +B Z +C X +A Z +A Z +C Y +A Z +A Y +B Y +A Z +C X +A Z +A Z +A Z +A Z +A Y +A Z +A Z +C Y +C X +C X +C X +A Z +A Z +B Y +A Z +A Z +C Z +B Z +A Y +A Z +B Y +A Z +B Y +A X +B Z +A Z +A Z +A Z +C X +C X +A X +A Z +A Z +C X +A Z +B Y +A Z +B Z +A Z +A Z +B Z +B Z +C Y +B Z +A X +B Z +A Z +B Y +A Z +B Z +C X +A Z +B Y +B Z +A Z +B Y +C X +B Y +A Z +A Z +A Z +B Y +A Z +A Z +B Y +B Z +C Z +A X +A Z +A Z +C Z +C X +A Z +C X +A Z +A X +A Z +A Z +A Z +B X +B Y +A Z +A Z +A Z +C Y +B Y +C X +C X +A Z +A Z +A Z +A X +C X +B Z +C X +C X +A Z +A Z +A Z +A Z +B Z +A Y +A Y +C X +A Y +C X +B Y +A Z +C Z +A Z +B Y +A Z +C X +B X +A Y +C X +A Z +A Z +A Y +B Z +C X +C X +C X +B Y +A Z +A Z +B Y +A Z +B Z +C X +C Z +A Z +C X +B Z +A Z +B Y +C X +A Y +B Y +C X +C X +A Z +A Y +A Z +A Z +A Z +A Y +C X +A Z +A Z +B Z +A Z +B Z +A Z +C Z +C Z +A Z +A Z +B Z +A Z +B Z +A Z +B Z +B Y +B Y +B Z +B Y +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +C X +A Z +A Z +C Y +A Z +C Y +B Y +C X +B Z +A Z +A Z +C X +A Z +B Y +A Z +A Z +A Z +B Z +A Z +B Y +A Z +B Y +A Z +A Z +C Z +A Z +C X +C Y +C X +C Y +C X +A Z +B Z +A Z +A Z +A Z +A Z +A Z +B Y +A Z +C X +C X +A Z +A Z +C Z +C Z +A Z +A Z +A Z +C X +A Z +A Z +A Z +A Y +A Z +C X +A Z +A Z +A Z +C X +C X +A Z +C Y +A X +A Z +A Z +A Y +B Z +A Z +A Z +A Z +C X +A Z +A Z +A Z +B Z +B Z +A Y +B Z +C X +B Y +A Z +A Z +A Z +A Z +A Z +A Z +B Z +C X +A Z +A Y +A Z +B Y +B Z +C Z +A Z +A Y +A Z +B Z +A Y +C X +A Z +A Y +A Z +C Y +A Z +A Z +B Y +C X +A Z +A Z +A X +A Z +C X +A Z +B Y +A Z +C X +A Z +B Y +A Z +C Y +B Z +C X +A Z +C X +B Y +A Z +C X +A Z +B Y +A Z +A Z +C Z +A Z +A Y +A Z +A Z +C X +A Y +A Z +B Z +A Z +A Y +C X +A Z +B Y +A Y +A Z +A Z +A Z +A Z +A Z +A Z +B Z +B Y +B X +C Y +B X +A Z +A Y +C X +A Z +A Z +C X +C Y +A Y +A Z +C X +B Y +B Y +C X +A Z +C Y +A Z +A Z +A Z +A Z +B X +A Z +A X +B Z +C Z +A Z +A Z +A Y +A Z +A Y +A Z +A Z +B Y +A Z +A Z +A Z +C X +A Z +A Z +A Z +B Z +A Z +A Z +A Z +A Z +A Z +B Z +A Z +A Z +C X +A Z +A Z +A Z +A Z +A Y +A Z +A Z +C Z +A Z +A Y +B Y +B Z +A Z +B Y +B Z +A Z +C X +A Z +B X +A Z +A Z +A Y +A Z +B X +B Z +A Z +B Z +A Y +A Z +A Z +A Z +B Y +A Z +B Z +A Z +B Z +A Z +A Y +A Z +B Z +A Z +C X +C X +A Z +A Z +B Z +A Z +A Z +C X +A Z +A X +A Z +A X +C X +A Y +C Y +B Y +A Z +A Y +A X +A Z +A Y +A Z +A Z +A Z +C X +B Z +A Z +B Y +A Z +A Y +A Z +A Z +B Z +C X +A Z +A Z +A Y +C X +C Y +B Z +A Z +A Z +B Z +C X +A Z +A Z +A Z +C Y +A Y +A Z +B Z +B Z +A Z +B Z +A X +A Z +B Z +A Z +A Z +B Y +A Z +A Y +B Y +A Z +B Z +C X +C Y +A Z +B Z +C X +A Z +B X +A Z +A Z +C X +A Z +A Y +B Z +B Y +A Z +A Y +C Y +A Z +C X +B Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A Z +C X +B Y +B Z +C X +C X +C X +A Z +A Z +B Z +B Y +A Z +A Z +B Y +B Y +A Y +A Y +A X +A Y +B Y +A Y +C X +A Z +A Z +A Z +A Y +B Y +A Z +C Y +B Z +C X +A Y +A Z +C Z +A Z +B Z +C X +B Z +C X +B Z +B Y +B Y +C X +A Z +A Z +B Z +B Z +B Z +A Z +A Z +A Z +A Z +A Z +C X +C X +C Y +B X +C X +A Z +A Z +A Z +A Z +A Z +A X +A Z +C X +A Z +C Z +A Z +C X +C Z +A Z +A Z +A Y +B Z +A X +A Z +A Z +A Z +C X +B Y +A Z +B Y +A Z +B Y +A Z +C X +A Z +C X +A Z +A Z +A Z +A Z +A Z +B X +B Y +C X +C X +A Z +C X +A Z +A Z +A Z +A Y +A Z +A Y +A Z +A Z +A Z +C Y +A Z +A Z +B Z +B Y +C X +A Y +A Z +B Z +A Z +A Z +A Z +B Y +C Z +A Y +C Y +A X +A X +B Z +A Y +C X +C X +B Z +A Z +B Z +A Z +A Z +A Y +B Z +C Y +A Z +A Z +A Z +C X +B Y +A X +A Z +C X +A Z +B Z +B Y +C X +B Y +A X +A Z +A Z +A Z +A Y +A Z +A Z +A Y +A Y +A Y +A X +A Z +A Z +B Z +A Y +A Z +C X +C X +A Z +A Z +B Z +B Y +A Z +A Z +C X +A Y +C X +B Z +A Z +A Z +A Z +A Y +A X +C Y +C X +C X +A Z +A Y +A Z +A Z +A Z +C X +A Z +A Z +B Z +C X +C X +B Z +B Z +C X +A Z +B X +A Z +B Z +A Y +A Z +A Z +C X +A Z +C Z +A Z +B Z +C X +A Z +B Y +A Y +A Z +A Z +B X +C X +B Z +C X +C X +C Y +B Z +C X +A Y +C X +A Z +A Z +A Z +A Y +A Z +C X +C Y +A Z +A Z +B Z +A Z +B Y +A X +A X +B Z +C X +B Y +A Z +C X +A Z +B Z +A Z +B Y +B Y +A X +B Y +A Z +A X +A Z +C X +A Z +A Z +B Y +C Y +A X +A Z +C Y +C X +A Z +A Z +A Z +A Y +A Z +C X +A Z +B Y +A Z +B Z +B Z +C X +B Y +A Z +C Y +A Y +A Z +A Z +C X +A Z +A Z +A Z +A Z +B Y +B Z +A Z +A Z +C Y +A Z +A Z +A Z +A Z +A Y +A Z +A Z +C Y +B Y +B Z +A Z +B Z +A Z +B Z +A Z +A Z +A Y +A Z +A Z +B Z +C Y +A Z +B Z +A X +C X +C X +A Z +A Z +A Z +A Z +A Z +C X +A Z +C X +A Z +B Y +A Z +C Y +A Y +B Z +C X +A Y +A Z +A Y +A Z +B Z +B Y +A Y +B Z +A Z +A Z +C Z +C Z +A Y +A Z +A Z +C X +A Z +A X +C Y +C X +A Z +A Z +B Y +B Z +C Y +A Z +B Z +A Z +C Z +A Z +A Y +B Y +C X +A Z +A Z +A Z +C X +A Z +A Y +A Z +A Z +B Z +C X +C X +C X +A Z +A Z +A Z +C X +A Z +A Z +A Z +A X +A Z +C X +C X +B Z +A Z +A Z +A Z +B Y +A Z +C X +A X +B Z +C X +A Z +C X +A Y +A Z +A Z +A Y +A Z +A Y +A X +C X +A Z +A Y +B Y +A Z +A Y +C Z +B Y +A Z +A Z +A Y +A Z +C X +A Z +B Y +B Z +B Z +A Z +A Z +A Z +C X +A Z +B Y +B Y +A Z +A Y +C X +A Z +C X +A Z +C X +C X +A Y +B Z +A Z +A Z +A Z +A Y +A X +B Y +A Z +B Z +B Y +C Y +C X +C Y +A Z +B Z +A Z +A Y +B X +C Z +A X +A Z +A Z +A Z +A Y +A Y +A Z +A Y +C X +A Z +A Y +C X +A Z +A Z +C Y +A Z +B Z +A Y +B Z +B X +B Z +C X +A Z +A Z +C X +A Z +A Z +C X +B Z +B Z +B Z +A Z +A Z +B Y +A Z +A Z +C Z +C Z +B Z +A Z +B Y +A Z +A Z +C X +B Z +A Z +A Z +A Z +C Y +B Y +C X +A Z +A Z +A Z +A Y +A Z +C X +A Z +C X +A Z +A Z +C Y +C X +C X +C X +C X +C X +B Z +B Z +B Y +B Y +C Z +A Z +B Z +A Z +A X +A Z +A Z +A Z +C X +A Z +C X +A Z +A Z +C X +C X +B Y +A Z +C Y +A Z +A Y +C Y +B Z +B Y +C X +A Z +C Y +A Z +A Z +A Z +B Y +C X +B Z +B Z +C X +B Y +B Z +A Z +C X +A Z +B Y +B Z +A Y +A Z +A Z +A Z +A Z +C Y +A Z +C Y +A Z +B Y +C X +B Z +A Z +A Z +B Z +C X +B Z +A Z +A Z +A X +B Y +A Z +A Z +A Z +A Z +A Y +B Z +A Z +A Z +A Z +B Z +C Y +C X +C X +B Z +A Z +B Z +C X +A Y +C X +B Y +B Z +C Y +B Y +B Y +A Y +C Y +A Z +A Z +B Z +B Z +A X +A Z +A Z +B Z +A Z +B Z +A X +A Z +A Y +A Y +A Z +B Z +A Z +B Z +A Z +B Z +C X +A Z +A Z +C X +A Z +A Z +A Z +C X +B Y +A X +B Z +B Z +C Y +A Z +A Z +C X +B Y +C X +A Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +B Z +B Z +C X +A Y +C Z +A Y +A Z +C Y +A Z +A Z +A Y +A Z +C X +C Z +A Z +A Y +A Z +A X +A Y +A Z +C X +B Z +A Z +B Z +C Y +C X +A Z +A Z +A X +A Z +B Z +C X +A Z +B Y +A Z +A X +A Z +B Z +A Z +A Z +C X +B Z +B X +A Z +A Z +C Z +A Z +A Z +A Y +B Z +A Z +C X +B Z +A Z +C Y +A Z +B Z +B Z +A Z +A Z +C X +B Z +C Y +A Y +A Y +B Z +A Z +A Z +C Z +B Z +A Y +A Y +C Z +C Z +A Z +B Z +B Y +A Z +B Y +A Z +A Z +A Z +C Y +A Y +A Z +A Z +A Z +A Z +C Z +A Z +B Y +A Z +B Z +C Y +A Z +B Y +B Z +A Z +A Y +A Z +A Z +B Z +A Z +A Z +A Z +C Z +B Z +C X +B Z +A Z +A Z +A Y +A Z +A Z +A Z +A Z +C Y +A Z +A Z +A Z +A X +A Y +B Y +C X +A Z +A Z +B Y +A Z +C X +A Y +A Z +A Z +C X +A X +A Z +A Z +A Z +B Y +B Z +A X +A Z +C X +A Z +C X +B Z +B Y +A Z +B Y +A Y +A Z +A Y +A Z +B Y +C X +B X +B Y +C X +A Z +A Z +A Y +A Z +A Y +B Z +B Y +B Y +A Y +A X +A Z +C X +A Z +B X +A Z +A Z +C X +B Y +B Z +B Z +B Y +B Z +A Y +C X +C Z +A Z +A Y +B Y +B Y +A Z +A Y +C Y +B Y +B Z +A Z +A Y +A Z +B Z +A Z +A Z +A Z +A Z +B Z +A Y +C X +A Z +A Z +B Y +A Z +B Y +B Z +A Z +C X +A Z +C X +B Y +A Z +B Z +C X +A Z +A Z +A Z +C X +C X +A Z +A Z +A Z +B Y +A Z +A Z +A Z +A Z +A Z +A Y +B Z +C Y +A Y +C X +A Z +A Z +B Y +B X +A Z +C Z +A Z +A Y +A Z +A X +A Z +A Z +A Z +C Z +C X +C X +B Y +C X +C X +B Y +C Z +C X +C X +A Y +A Z +C X +C Z +B Y +A Z +C X +C X +A Z +A Z +A Z +A Y +A Z +A Y +B Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +C X +C X +C X +A Z +A Z +B Z +A Y +A Z +A Z +B Z +A Z +A Z +A Z +A Z +A Z +C X +C X +A Z +A Z +C X +C Z +C Z +A Z +A Z +B Y +B Z +A Z +A Z +B Y +B X +C X +B Y +C X +C X +A Z +C X +C X +C Y +C X +C X +C X +B Z +B Z +A Z +A Z +B Z +A Z +C X +A Z +B Y +A Y +A Z +C Z +B Y +B Z +B Z +A Z +C X +B Z +A X +B Y +A Y +B Y +B Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +C X +B Z +A Z +B Y +A Z +B Z +A Z +B Y +A Z +A X +A Z +B Y +B Y +A Y +C X +A Z +A Z +C Y +A Z +A Z +B Z +C Z +B Z +A Z +A Z +C X +C Y +B Z +A Z +C X +A Z +C X +B Y +C X +B Z +A Z +A Z +C X +A Z +C X +A Y +C X +C X +C Y +B Z +C X +B Z +C X +A Z +A Z +C X +A Y +B Z +C X +B Z +C X +A Z +C X +C X +A Z +A Z +B Y +C Z +A X +A X +A Z +C X +A Z +A Z +A Z +A Y +A Z +A Z +A Z +A Z +B Z +C X +B Y +A Z +A Z +B Y +A Z +A Z +A Z +A Z +B Y +A Z +B Z +A Y +A Y +A Y +A Z +A Y +A Z +B Z +A Z +B Y +A Z +C X +A Y +C X +A Z +B Y +A Y +A Z +A Y +A Z +C Z +A Z +B Z +A Z +C X +B Z +A Z +A Z +C X +B Y +A Z +C X +C Y +A Z +B Y +A Z +B X +B Y +B Y +C Z +C X +A Z +C X +A Y +A Y +B Z +A Z +C X +B Z +A Z +A Z +A Y +C X +C X +A Z +A X +B Z +A Z +A Z +A X +A Z +C X +A Z +B Y +A Z +B X +B Y +A Y +C X +A Z +A X +A X +A Y +B Y +A Y +A Z +C X +B Z +A Z +A X +A X +A Z +C X +B Z +C X +B Y +A Z +C X +A Y +A Z +A Z +A Z +A Z +C Z +B Z +C Z +A Z +A Z +C X +B Y +A Y +B Z +C X +B Z +A Z +A Z +A Z +A X +B Y +C X +B Y +B Z +B Z +A Z +A Y +C Y +A Y +A X +A Z +C X +A Z +A Z +A X +A Z +A Z +C X +A Z +A X +A Z +C Y +A Z +B Z +A Y +A Z +C Z +A Y +A Y +B Z +A Y +A Y +A Y +A Z +A Z +A Z +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +A X +A Z +A Z +A Z +A Z +A Z +A Y +B Z +A Y +A Z +C X +A X +B Z +A Z +A X +C Y +B Y +B Y +B Z +C X +C X +A Z +A Z +C X +C X +A Z +A X +A Z +A Z +A Z +A X +C X +C X +A Z +A Y +A Z +A Z +A Z +A Z +C Z +A Z +C X +B Z +C Z +C X +A Z +B Y +C X +C X +B Z +C X +B Y +A Y +B X +A Z +A Z +A Z +B Z +C X +A X +B Z +A X +A Z +C Z +B Z +A Z +A Z +C X +C X +A X +C X +C Y +A Z +A Z +A Z +B Z +C Z +A Z +A Z +A Z +A Z +A Z +B Z +A Z +A Z +C X +B Y +A Z +B Z +A Z +C X +A Z +A Z +A Z +B Z +C X +B Y +A Z +A Z +A Z +C Y +A Z +A Z +C X +C X +A Y +B Z +A Z +C Y +C X +A Z +A Z +A Z +C X +A Z +A Z +B Z +B Z +A Z +A Z +A Z +C X +C X +A Z +B Z +A X +B Y +C X +C X +C X +A Z +C X +A Z +A Z +B Y +A Y +B Z +B Z +A Z +A Z +C Z +A Y +A Y +A Z +A Z +C X +C Z +A Z +A Z +A Z +A Z +C Y +B Y +B Y +C Y +A Z +C X +B Z +A X +A Y +B Z +A Z +A Z +A Z +A X +A Z +A Z +A Z +A Y +C Z +A Y +C X +A Y +A X +C X +A Z +B Y +A Y +B Y +A Z +C X +C Z +A Z +C Z +A Y +A Z +A Z +B Z +B X +B Z +B Z +B Y +C Z +C X +A X +C Z +B Z +A Z +A Z +B Z +A Y +A Z +B Y +C X +A Z +B Z +C X +A X +B Z +A Z +A Z +C X +C X +C X +B Z +C Z +A Z +C X +A Z +A Z +A Z +A Z +C Z +C X +A X +B Y +A Z +C X +C Z +A Z +C X +B Z +B Y +A Z +C X +A Z +B Z +C Z +A Z +A Z +A X +B Y +C X +A Z +C X +A Z +A X +C X +A Z +C X +A Y +A Z +C X +C Z +C Y +B Z +B Z +A Y +B Z +A Z +A Z +A Y +A Z +C X +C X +A Z +A Z +C X +B Z +A Z +B Y +A Z +A Z +A Z +C X +A Z +A Y +B Y +A Z +C X +A Z +A X +A Z +A Z +C X +C Y +A Z +C X +A Z +A Y +C X +B Z +C Z +B Y +A Z +A Z +B Y +A Z +B Y +A Z +A Z +A Z +C X +A Y +C X +A Z +C Y +A Z +A Z +A Z +B Y +B Z +B Z +C Z +A X +A Z +A Z +C X +A Z +C X +A Z +A X +C Z +C X +A Z +A Z +A Z +A Z +B Z +A Z +A Z +C Y +A Y +A Z +C Y +C Y +A Z +B Z +A Z +B Z +A Z +B Z +C Y +C X +C X +A Y +A Z +B Z +C X +A X +A Z +A Z +A Y +A Z +A Z +A Z +C X +C X +A Y +A Z +A Z +C X +B Z +B Y +A Y +A Z +B Z +A Z +A Z +A X +A Z +A Z +B Y +A Z +A Y +B Z +C X +A Z +A Z +A Z +C X +A Z +B Z +B Z +A Z +A Z +A Z +A Z +B Z +A Z +A Z +A Z +A Z +C X +C X +A Z +B X +A Z +B Y +C Z +A Z +A Z +A Z +C Z +A Z +B Y +A X +A Z +C Z +A Z +C Z +A Z +C X +A Y +C X +C Z +A Y +A Z +A Z +C X +C X +A Z +A Z +A Z +B Z +B Z +A Y +B Y +C Z +B Z +B X +A Z +A Z +A Z +C X +B Y +A Z +B Z +C X +A Z +A Z +C X +C X +A Z +A Z +A Z +A Z +B Z +A Z +A Z +A Z +A Z +A Z +B Z +A Z +A Z +B Z +A Y +A Z +B Y +A Z +A Z +A Z +B Z +A Z +A Z +C X +B Y +C X +A Y +C X +A Z +A Z +A Z +C X +B Z +A Z +A Z +A Z +A Z +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Y +C X +B Y +C X +A Z +A Z +A Z +A Z +A Z +B Y +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +A Z +C X +A Y +B Z +A Z +C X +A Z +C X +B Z +B Z +A Z +A Z +A Z +C X +A Z +B Z +B Y +C X +C X +C X +B Z +A X +A Y +A Z +A Z +A Z +A Y +A Z +A Z +A Y +A X +A Y +C X +A Y +C X +B Z +B Y +C X +B Y +B Y +C X +A Z +A Z +B Z +C X +A Z +A Z +B Y +A Z +B Y +A Z +A X +C Y +C X +B Z +C X +A Z +A Z +A Z +C X +A Z +C X +A X +A Y +A Z +A Z +C X +A Y +A Z +B X +A Y +A Z +A Z +A Z +A Z +A Z +A Z +C X +A Z +C X +A Z +C Y +A Z +A Z +B Z +A Y +A Z +B Y +B Y +A Z +C X +A Z +C X +C Z +A Z +B Z +B Z +A Z +A Z +C X +C X +B Y +A Z +A Z +B Z +C Z +B Y +B Y +C X +A Z +A Z +B Y +A Z +C X +C Z +A Z +B Z +C X +A Y +C X +A Z +B Y +B Y +A Y +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A Y +A Z +B Y +B Y +B Y +C X +A Z +A Z +A Y +A Z +A Z +C X +A Y +C X +A Z +A Z +A Z +B Y +A Z +A Z +B Z +C X +A Z +B Y +B Y +C X +C Z +B Y +A Z +A Z +A Z +C X +A Z +B Z +C Z +C X +B Y +A Z +A Z +A Y +A X +A Z +A Z +A Z +A Z +A Z +A Y +B Y +A Z +B Z +B Z +A Z +C Y +A X +A Z +A Z +C X +C X +C Y +B Y +B Y +B X +A Z +A Z +B Z +A Z diff --git a/day02/src/main.rs b/day02/src/main.rs new file mode 100644 index 0000000..3f22e2a --- /dev/null +++ b/day02/src/main.rs @@ -0,0 +1,79 @@ +use std::fs; + +fn main() { + const FILE_PATH: &str = "input.txt"; + println!("Hi this is the second day of AOC2022, first we will read the file {}", FILE_PATH); + let contents = fs::read_to_string(FILE_PATH) + .expect("Should have been able to read the file"); + + println!("The amount of points you whould get is: {}", get_points(&contents, &get_round)); + println!("The ammount of point you whould get using the real strategy are: {}", get_points(&contents, &get_true_round)); + +} + +fn get_true_round(a: &str, b: &str) -> i32 { + let b = match b { + "X" => 0, + "Y" => 3, + "Z" => 6, + _ => panic!("WTF") + }; + let a = match a { + "A" => 1, + "B" => 2, + "C" => 3, + _ => panic!("WTF") + }; + ((b/3+2)+a)%3+b +} + +fn get_round(a: &str, b: &str) -> i32 { + let tot = match b { + "X" => 1, + "Y" => 2, + "Z" => 3, + _ => panic!("WTF") + }; + let a = match a { + "A" => 1, + "B" => 2, + "C" => 3, + _ => panic!("WTF") + }; + return match a - tot{ + 1 => 0, + 0 => 3, + 2 => 6, + -1 => 6, + -2 => 0, + _ => panic!("Numers") + } + tot +} + +fn get_points(input: &str, f: &dyn Fn(&str,&str) -> i32) -> i32 { + input.lines().map(|l| { + let mut n = l.split_whitespace(); + let a = n.next().expect("input must be correct"); + f(a, n.next().expect("input must be correct")) + } + ).sum() +} + +#[cfg(test)] +mod test { + use super::*; + #[test] + fn it_works() { + let input = r#"A Y +B X +C Z"#; + assert_eq!(get_points(input, &get_round), 15); + } + #[test] + fn it_works2() { + let input = r#"A Y +B X +C Z"#; + assert_eq!(get_points(input, &get_true_round), 12); + } +} \ No newline at end of file