From: alex <> Date: Thu, 5 Dec 2024 08:42:52 +0000 (+0100) Subject: Day05 - part 2 X-Git-Url: https://aoc.elinar.fr/?a=commitdiff_plain;h=7cb1fe6a796601e0510fea666ba7ea1c4cdb214b;p=aoc_2024 Day05 - part 2 --- diff --git a/src/day05.rs b/src/day05.rs index d7fd970..0133eb0 100644 --- a/src/day05.rs +++ b/src/day05.rs @@ -63,7 +63,29 @@ fn run_part1(input: &str) -> Result> { fn run_part2(input: &str) -> Result> { println!("Running {} - part 2", get_day()); - Ok(0) + let puzzle = Puzzle::new(input); + + let res = puzzle.lines.iter() + .filter(|l| !puzzle.is_ordered(l)) + .map(|l| { + let mut pages = l.clone(); + while !puzzle.is_ordered(&pages) { + for i in 1..pages.len() { + let v = pages[i]; + for j in 0..i { + if puzzle.order.get(&v).is_some() && puzzle.order.get(&v).unwrap().contains(&pages[j]) { + let tmp = pages[j]; + pages[j] = pages[i]; + pages[i] = tmp; + } + } + } + } + pages[pages.len()/2] + }) + .sum(); + + Ok(res) } pub fn run(input: &str) -> Result<(), Box> { @@ -122,6 +144,6 @@ mod tests { #[test] fn test_part2() { - assert_eq!(0, run_part2(TEXT_INPUT).unwrap()); + assert_eq!(123, run_part2(TEXT_INPUT).unwrap()); } }