From 0ac8fa9f185270078bb0ee80dbf3164d506ba7b6 Mon Sep 17 00:00:00 2001 From: kleph Date: Tue, 2 Dec 2025 01:59:05 +0100 Subject: [PATCH] 2025 - Day 1 part 2 - rust --- 2025/rust1_2/src/main.rs | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 2025/rust1_2/src/main.rs diff --git a/2025/rust1_2/src/main.rs b/2025/rust1_2/src/main.rs new file mode 100644 index 0000000..087753c --- /dev/null +++ b/2025/rust1_2/src/main.rs @@ -0,0 +1,42 @@ +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() { + // let filename = "../1/input_example.txt"; + let filename = "../1/input.txt"; + let file = BufReader::new(File::open(filename).expect("Unable to open file")); + + let mut dial: i32 = 50; + let mut count: i32 = 0; + + for line in file.lines() { + let mut wline: String = line.unwrap(); + let direction = wline.chars().next().unwrap(); + + wline.remove(0); + let distance: i32 = wline.parse().unwrap(); + let was_zero: i32; + + if direction == 'L' { + if dial == 0 { + was_zero = 0; + } else { + was_zero = 1; + } + dial -= distance; + if dial <= 0 { + count += (dial / 100).abs() + was_zero; + } + println!("Left distance={} dial={} count={}", distance, dial, count); + } else { + dial += distance; + if dial > 99 { + count += dial / 100; + } + println!("Right distance={} dial={} count={}", distance, dial, count); + } + + dial = dial.rem_euclid(100) + } + println!("count: {}\n", count) +}