From 9f5e50173b2bca1cb02b2f0c568ef7921474ae0d Mon Sep 17 00:00:00 2001 From: mhsn Date: Mon, 2 Jun 2025 16:58:43 +0000 Subject: 2024-04 rust p1 --- 2024/04/rust/Cargo.lock | 14 ++++++++++++++ 2024/04/rust/Cargo.toml | 7 +++++++ 2024/04/rust/src/main.rs | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 2024/04/rust/Cargo.lock create mode 100644 2024/04/rust/Cargo.toml create mode 100644 2024/04/rust/src/main.rs diff --git a/2024/04/rust/Cargo.lock b/2024/04/rust/Cargo.lock new file mode 100644 index 0000000..e0c35ba --- /dev/null +++ b/2024/04/rust/Cargo.lock @@ -0,0 +1,14 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aoc" +version = "0.1.0" + +[[package]] +name = "aoc_2024-04" +version = "0.1.0" +dependencies = [ + "aoc", +] diff --git a/2024/04/rust/Cargo.toml b/2024/04/rust/Cargo.toml new file mode 100644 index 0000000..49f5cf9 --- /dev/null +++ b/2024/04/rust/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "aoc_2024-04" +version = "0.1.0" +edition = "2021" + +[dependencies] +aoc = { version = "0.1.0", path = "../../../lib/rust" } diff --git a/2024/04/rust/src/main.rs b/2024/04/rust/src/main.rs new file mode 100644 index 0000000..fd6a715 --- /dev/null +++ b/2024/04/rust/src/main.rs @@ -0,0 +1,35 @@ +use aoc::Grid; +use std::io; + +fn main() -> io::Result<()> { + let grid: Vec> = io::stdin() + .lines() + .map(|line| line.unwrap().chars().collect()) + .collect(); + let grid = Grid::new(grid); + + let silver: usize = silver(&grid); + let gold: u64 = 0; + println!("silver: {silver}"); + println!("gold: {gold}"); + + return Ok(()); +} + +fn silver(grid: &Grid) -> usize { + let dirs = [ + (1, 1), + (1, 0), + (1, -1), + (0, 1), + (0, -1), + (-1, 1), + (-1, 0), + (-1, -1), + ]; + grid.points() + .flat_map(|p| dirs.into_iter().map(move |dp| grid.ray(p, dp))) + .map(|cs| cs.zip("XMAS".chars()).all(|(&a, b)| a == b)) + .filter(|p| *p) + .count() +} -- cgit v1.2.3