day8: part2 solution
This commit is contained in:
20
src/day8.rs
20
src/day8.rs
@@ -126,7 +126,23 @@ fn part1(input: &Circuits) -> u64 {
|
|||||||
|
|
||||||
#[aoc(day8, part2)]
|
#[aoc(day8, part2)]
|
||||||
fn part2(input: &Circuits) -> u64 {
|
fn part2(input: &Circuits) -> u64 {
|
||||||
0
|
let mut circuits = input.clone();
|
||||||
|
circuits.circuits = Vec::from_iter((0..circuits.junctions.len()).map(|i| vec![i]));
|
||||||
|
for (a, b, _d) in circuits
|
||||||
|
.junctions
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.combinations(2)
|
||||||
|
.map(|p| (p[0].0, p[1].0, p[0].1.distance(p[1].1)))
|
||||||
|
.sorted_by(|a, b| a.2.partial_cmp(&b.2).unwrap())
|
||||||
|
{
|
||||||
|
circuits.connect(a, b);
|
||||||
|
if circuits.circuits.len() == 1 {
|
||||||
|
return (circuits.junctions[a].pos.0 * circuits.junctions[b].pos.0) as u64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
panic!()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@@ -161,6 +177,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn part2_example() {
|
fn part2_example() {
|
||||||
assert_eq!(part2(&parse(EXAMPLE)), 0);
|
assert_eq!(part2(&parse(EXAMPLE)), 25272);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user