1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//! # Day 24: It Hangs in the Balance
//!
//! It's Christmas Eve, and Santa is loading up the sleigh for this year's deliveries. However,
//! there's one small problem: he can't get the sleigh to balance. If it isn't balanced, he can't
//! defy physics, and nobody gets presents this year.
//!
//! No pressure.
//!
//! Santa has provided you a list of the weights of every package he needs to fit on the sleigh. The
//! packages need to be split into **three groups of exactly the same weight**, and every package
//! has to fit. The first group goes in the passenger compartment of the sleigh, and the second and
//! third go in containers on either side. Only when all three groups weigh exactly the same amount
//! will the sleigh be able to fly. Defying physics has rules, you know!
//!
//! Of course, that's not the only problem. The first group - the one going in the passenger
//! compartment - needs **as few packages as possible** so that Santa has some legroom left over. It
//! doesn't matter how many packages are in either of the other two groups, so long as all of the
//! groups weigh the same.
//!
//! Furthermore, Santa tells you, if there are multiple ways to arrange the packages such that the
//! fewest possible are in the first group, you need to choose the way where the first group has
//! **the smallest quantum entanglement** to reduce the chance of any "complications". The quantum
//! entanglement of a group of packages is the [product] of their weights, that is, the value you
//! get when you multiply their weights together. Only consider quantum entanglement if the first
//! group has the fewest possible number of packages in it and all groups weigh the same amount.
//!
//! For example, suppose you have ten packages with weights `1` through `5` and `7` through `11`.
//! For this situation, some of the unique first groups, their quantum entanglements, and a way to
//! divide the remaining packages are as follows:
//!
//! ```txt
//! Group 1;             Group 2; Group 3
//! 11 9       (QE= 99); 10 8 2;  7 5 4 3 1
//! 10 9 1     (QE= 90); 11 7 2;  8 5 4 3
//! 10 8 2     (QE=160); 11 9;    7 5 4 3 1
//! 10 7 3     (QE=210); 11 9;    8 5 4 2 1
//! 10 5 4 1   (QE=200); 11 9;    8 7 3 2
//! 10 5 3 2   (QE=300); 11 9;    8 7 4 1
//! 10 4 3 2 1 (QE=240); 11 9;    8 7 5
//! 9 8 3      (QE=216); 11 7 2;  10 5 4 1
//! 9 7 4      (QE=252); 11 8 1;  10 5 3 2
//! 9 5 4 2    (QE=360); 11 8 1;  10 7 3
//! 8 7 5      (QE=280); 11 9;    10 4 3 2 1
//! 8 5 4 3    (QE=480); 11 9;    10 7 2 1
//! 7 5 4 3 1  (QE=420); 11 9;    10 8 2
//! ```
//!
//! Of these, although `10 9 1` has the smallest quantum entanglement (`90`), the configuration with
//! only two packages, `11 9`, in the passenger compartment gives Santa the most legroom and wins.
//! In this situation, the quantum entanglement for the ideal configuration is therefore `99`. Had
//! there been two configurations with only two packages in the first group, the one with the
//! smaller quantum entanglement would be chosen.
//!
//! What is the **quantum entanglement** of the first group of packages in the ideal configuration?
//!
//! [product]: https://en.wikipedia.org/wiki/Product_%28mathematics%29

use anyhow::Result;

pub const INPUT: &str = include_str!("d24.txt");

pub fn solve_part_one(input: &str) -> Result<i64> {
    Ok(0)
}

pub fn solve_part_two(input: &str) -> Result<i64> {
    Ok(0)
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn part_one() {}

    #[test]
    fn part_two() {}
}