diff --git a/2022/Cargo.lock b/2022/Cargo.lock new file mode 100644 index 0000000..0300de3 --- /dev/null +++ b/2022/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "advent-2022" +version = "0.1.0" diff --git a/2022/Cargo.toml b/2022/Cargo.toml new file mode 100644 index 0000000..a067952 --- /dev/null +++ b/2022/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "advent-2022" +version = "0.1.0" +edition = "2021" + +[lib] +name = "advent_2022" +path = "src/lib.rs" + +[[bin]] +name = "day1" +path = "src/day1.rs" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2022/src/day1.rs b/2022/src/day1.rs new file mode 100644 index 0000000..41086a8 --- /dev/null +++ b/2022/src/day1.rs @@ -0,0 +1,44 @@ +const DATA: &'static str = include_str!("../data/day1.txt"); + +// const DATA: &'static str = "1000 +// 2000 +// 3000 + +// 4000 + +// 5000 +// 6000 + +// 7000 +// 8000 +// 9000 + +// 10000 +// "; + + +fn main() { + let mut counts = DATA.trim() + .split("\n\n") + .map(|lines| { + lines.split("\n") + .map(|c| c.parse::().unwrap()) + .collect::>() + }) + .collect::>(); + + counts.sort_by_key(|values| values.iter().sum::()); + + let max_total_cals: u64 = counts.last() + .unwrap() + .iter() + .sum(); + + let top3_total_cals: &u64 = &counts[(counts.len() - 3)..] + .iter() + .flatten() + .sum(); + + println!("Part 1: {max_total_cals}"); + println!("Part 2: {top3_total_cals}"); +} diff --git a/2022/src/lib.rs b/2022/src/lib.rs new file mode 100644 index 0000000..20aff69 --- /dev/null +++ b/2022/src/lib.rs @@ -0,0 +1,12 @@ +#[allow(unused_macros)] +macro_rules! get_data { + ($filename: literal) => { + include_str!(concat!("../data/", $filename, ".txt")) + } +} + + +#[allow(dead_code)] +fn main() { + todo!(); +}