diff options
Diffstat (limited to '2025/ab.rs')
| -rw-r--r-- | 2025/ab.rs | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/2025/ab.rs b/2025/ab.rs deleted file mode 100644 index bafd2ae..0000000 --- a/2025/ab.rs +++ /dev/null @@ -1,69 +0,0 @@ -use aoc::fetch::fetch; - -#[derive(Debug)] -struct Ring { - inner: usize, - counter: usize, -} - -impl Ring { - fn new() -> Self { - Self { - inner: 50, // start in 50 - counter: Default::default(), - } - } - - const MAX: usize = 99; - // minus - fn left(&mut self, num: usize) { - for _ in 0..num { - if self.inner == 0 { - self.inner = Self::MAX; - } else { - self.inner -= 1; - } - self.counter(); - } - } - - // plus - fn right(&mut self, num: usize) { - for _ in 0..num { - if self.inner == Self::MAX { - self.inner = 0; - } else { - self.inner += 1; - } - self.counter(); - } - } - - fn counter(&mut self) { - if self.inner == 0 { - self.counter += 1; - } - } -} - -pub fn main() { - let mut ring = Ring::new(); - let input = fetch(1, '\n'); - for i in input { - let dir = i - .chars() - .next() - .unwrap(); - let num = i[1..] - .parse() - .unwrap(); - - match dir { - 'L' => ring.left(num), - 'R' => ring.right(num), - _ => {} - } - println!("{}: {:#?}", num, ring) - } - println!("Result: {}", ring.counter); -} |
