From 10bb2a67c5bb005b304508eb2026780531132f82 Mon Sep 17 00:00:00 2001 From: mhsn Date: Thu, 7 Aug 2025 21:35:55 +0100 Subject: 2024-06 rust p1 --- 2024/06/rust/src/main.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 2024/06/rust/src/main.rs (limited to '2024/06/rust/src') diff --git a/2024/06/rust/src/main.rs b/2024/06/rust/src/main.rs new file mode 100644 index 0000000..92ac02d --- /dev/null +++ b/2024/06/rust/src/main.rs @@ -0,0 +1,43 @@ +use std::io; + +use aoc::grid::{Direction, Grid}; +use std::collections::HashSet; + +fn main() -> io::Result<()> { + let grid: Vec> = io::stdin() + .lines() + .map(|line| line.unwrap().chars().collect()) + .collect(); + let grid = Grid::new(grid); + let start = grid + .enumerate() + .filter(|(_, c)| **c == '^') + .next() + .unwrap() + .0; + + let silver: usize = silver(&grid, start); + let gold: usize = gold(&grid); + println!("silver: {silver}"); + println!("gold: {gold}"); + + return Ok(()); +} + +fn silver(grid: &Grid, start: (usize, usize)) -> usize { + let mut pos = start; + let mut dir = Direction { x: 0, y: -1 }; + let mut seen = HashSet::<(usize, usize)>::new(); + loop { + seen.insert(pos); + match grid.move_pos(pos, dir, 1).and_then(|p| grid.at(p)) { + Some(&'#') => dir = dir.cw(), + Some(_) => pos = grid.move_pos(pos, dir, 1).unwrap(), + None => break seen.len(), + } + } +} + +fn gold(grid: &Grid) -> usize { + 0 +} -- cgit v1.2.3