From b45852b9347cbb77870df9c81369b8f82bfd542e Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 13 Jan 2024 19:42:53 +0100 Subject: [PATCH] Day 13 part 2. --- src/day13.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/day13.rs b/src/day13.rs index c4e777a..2310b74 100644 --- a/src/day13.rs +++ b/src/day13.rs @@ -23,10 +23,9 @@ fn part1(deltas: &HashMap<(String, String), i32>) -> i32 { permutations(names).iter().map(|arrangement| { let mut happiness = 0; for i in 0..arrangement.len() { - let left = if i == 0 { arrangement.len() - 1 } else { i - 1 }; let right = (i + 1) % arrangement.len(); - happiness += deltas[&(arrangement[left].clone(), arrangement[i].clone())] + - deltas[&(arrangement[i].clone(), arrangement[left].clone())]; + happiness += deltas[&(arrangement[right].clone(), arrangement[i].clone())] + + deltas[&(arrangement[i].clone(), arrangement[right].clone())]; } happiness }).max().unwrap() @@ -54,10 +53,20 @@ fn p(mut input: Vec) -> Vec> { } -// #[aoc(day13, part2)] -// fn part2(input: &str) -> String { -// todo!() -// } +#[aoc(day13, part2)] +fn part2(deltas: &HashMap<(String, String), i32>) -> i32 { + let mut names: HashSet<_> = deltas.keys().map(|s| s.0.clone()).collect(); + names.insert("me".to_string()); + permutations(names).iter().map(|arrangement| { + let mut happiness = 0; + for i in 0..arrangement.len() { + let right = (i + 1) % arrangement.len(); + happiness += deltas.get(&(arrangement[right].clone(), arrangement[i].clone())).or(Some(&0)).unwrap() + + deltas.get(&(arrangement[i].clone(), arrangement[right].clone())).or(Some(&0)).unwrap(); + } + happiness + }).max().unwrap() +} #[cfg(test)] mod test {