Day 13 part 2.

This commit is contained in:
2024-01-13 19:42:53 +01:00
parent 6d230570a9
commit b45852b934

View File

@@ -23,10 +23,9 @@ fn part1(deltas: &HashMap<(String, String), i32>) -> i32 {
permutations(names).iter().map(|arrangement| { permutations(names).iter().map(|arrangement| {
let mut happiness = 0; let mut happiness = 0;
for i in 0..arrangement.len() { for i in 0..arrangement.len() {
let left = if i == 0 { arrangement.len() - 1 } else { i - 1 };
let right = (i + 1) % arrangement.len(); let right = (i + 1) % arrangement.len();
happiness += deltas[&(arrangement[left].clone(), arrangement[i].clone())] + happiness += deltas[&(arrangement[right].clone(), arrangement[i].clone())] +
deltas[&(arrangement[i].clone(), arrangement[left].clone())]; deltas[&(arrangement[i].clone(), arrangement[right].clone())];
} }
happiness happiness
}).max().unwrap() }).max().unwrap()
@@ -54,10 +53,20 @@ fn p(mut input: Vec<String>) -> Vec<Vec<String>> {
} }
// #[aoc(day13, part2)] #[aoc(day13, part2)]
// fn part2(input: &str) -> String { fn part2(deltas: &HashMap<(String, String), i32>) -> i32 {
// todo!() 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)] #[cfg(test)]
mod test { mod test {