day1 part2 :(

This commit is contained in:
2025-12-03 03:00:54 +01:00
parent 43be07c4f4
commit b106ffe622

View File

@@ -10,6 +10,7 @@ pub fn part1(input: &str) -> i32 {
dial_counter.zero_count dial_counter.zero_count
} }
#[derive(Debug)]
struct DialCounter { struct DialCounter {
position: i32, position: i32,
zero_count: i32, zero_count: i32,
@@ -26,7 +27,79 @@ impl DialCounter {
self.zero_count = self.zero_count + 1; self.zero_count = self.zero_count + 1;
} }
} }
fn rotate_2(&mut self, operation: &str) {
let direction = operation.chars().nth(0).unwrap();
let magnitude = operation[1..].parse::<i32>().unwrap();
match direction {
'L' => {
if self.position == 0 {
self.position = 100
}
self.position = self.position - magnitude;
while self.position < 0 {
self.position = self.position + 100;
self.zero_count = self.zero_count + 1;
}
if self.position == 0 {
self.zero_count = self.zero_count + 1;
}
}
'R' => {
self.position = self.position + magnitude;
while self.position > 99 {
self.position = self.position - 100;
self.zero_count = self.zero_count + 1;
}
}
_ => panic!("Unexpected input!"),
};
}
}
#[aoc(day1, part2)]
pub fn part2(input: &str) -> i32 {
let mut dial_counter = DialCounter {
position: 50,
zero_count: 0,
};
for line in input.lines() {
dial_counter.rotate_2(line)
}
dial_counter.zero_count
} }
#[cfg(test)] #[cfg(test)]
mod tests {} mod tests {
use super::*;
struct Setup {
test_string_1: String,
test_string_2: String,
}
impl Setup {
fn new() -> Self {
Self {
test_string_1: String::from("L68\nL30\nR48\nL5\nR60\nL55\nL1\nL99\nR14\nL82\n"),
test_string_2: String::from("R27\nL477\n"),
}
}
}
#[test]
fn test_part1() {
let setup = Setup::new();
assert_eq!(part1(&setup.test_string_1), 3);
println!(" ");
assert_eq!(part1(&setup.test_string_2), 1);
}
#[test]
fn test_part2() {
let setup = Setup::new();
assert_eq!(part2(&setup.test_string_1), 6);
println!(" ");
assert_eq!(part2(&setup.test_string_2), 5);
}
}