From c1700fda5f6faf77dab74b3b6090f503333722df Mon Sep 17 00:00:00 2001 From: Rakarake Date: Mon, 1 Dec 2025 13:36:43 +0100 Subject: [PATCH] 2025 day1 part1 --- aoc2025/day1.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ utils/lib.rs | 7 ++++++ 2 files changed, 64 insertions(+) create mode 100644 aoc2025/day1.rs diff --git a/aoc2025/day1.rs b/aoc2025/day1.rs new file mode 100644 index 0000000..6022f38 --- /dev/null +++ b/aoc2025/day1.rs @@ -0,0 +1,57 @@ +use utils::load_string; + +const TEST_INPUT: &str = +"L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82"; + +const START: u32 = 50; + +enum Rotation { + Left(u32), + Right(u32), +} + +fn parse(input: &str) -> Vec { + input.lines().map(|l| { + let (indicator, number) = l.split_at(1); + match indicator { + "L" => Rotation::Left(number.parse().unwrap()), + "R" => Rotation::Right(number.parse().unwrap()), + _ => panic!("hey!") + } + }).collect() +} + +pub fn part1() -> u32 { + let input = &load_string("inputs/2025/day1.input"); + //let input = TEST_INPUT; + let mut current_rotation = START; + let mut result: u32 = 0; + for roation in parse(input).iter() { + match roation { + Rotation::Left(amount) => { + // overflows to the left + current_rotation = (((current_rotation as i32) - *amount as i32).rem_euclid(100)) as u32; + }, + Rotation::Right(amount) => { + // overflows to the right + current_rotation = (((current_rotation as i32) + *amount as i32).rem_euclid(100)) as u32; + }, + } + if current_rotation == 0 { + result += 1; + } + } + result +} +pub fn part2() -> u32 { + 0 +} diff --git a/utils/lib.rs b/utils/lib.rs index 3dad11a..9b8f35e 100644 --- a/utils/lib.rs +++ b/utils/lib.rs @@ -1,3 +1,10 @@ +use std::path::Path; + +// Yoinked from https://github.com/loafey/advent_of_code/blob/master/utils/lib.rs +pub fn load_string>(p: P) -> String { + std::fs::read_to_string(&p).unwrap_or_else(|_| panic!("failed to load {:?}", p.as_ref())) +} + pub trait Matrix { fn transpose(self) -> Self; fn reverse_rows(self) -> Self;