Day 13 part 2.
This commit is contained in:
23
src/day13.rs
23
src/day13.rs
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user