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
//! # Day 19: Medicine for Rudolph
//!
//! Rudolph the Red-Nosed Reindeer is sick! His nose isn't shining very brightly, and he needs
//! medicine.
//!
//! Red-Nosed Reindeer biology isn't similar to regular reindeer biology; Rudolph is going to need
//! custom-made medicine. Unfortunately, Red-Nosed Reindeer chemistry isn't similar to regular
//! reindeer chemistry, either.
//!
//! The North Pole is equipped with a Red-Nosed Reindeer nuclear fusion/fission plant, capable of
//! constructing any Red-Nosed Reindeer molecule you need. It works by starting with some input
//! molecule and then doing a series of **replacements**, one per step, until it has the right
//! molecule.
//!
//! However, the machine has to be calibrated before it can be used. Calibration involves
//! determining the number of molecules that can be generated in one step from a given starting
//! point.
//!
//! For example, imagine a simpler machine that supports only the following replacements:
//!
//! ```txt
//! H => HO
//! H => OH
//! O => HH
//! ```
//!
//! Given the replacements above and starting with `HOH`, the following molecules could be
//! generated:
//!
//! - `HOOH` (via `H => HO` on the first `H`).
//! - `HOHO` (via `H => HO` on the second `H`).
//! - `OHOH` (via `H => OH` on the first `H`).
//! - `HOOH` (via `H => OH` on the second `H`).
//! - `HHHH` (via `O => HH`).
//!
//! So, in the example above, there are **`4` distinct** molecules (not five, because `HOOH` appears
//! twice) after one replacement from `HOH`. Santa's favorite molecule, `HOHOHO`, can become **`7`
//! distinct** molecules (over nine replacements: six from `H`, and three from `O`).
//!
//! The machine replaces without regard for the surrounding characters. For example, given the
//! string `H2O`, the transition `H => OO` would result in `OO2O`.
//!
//! Your puzzle input describes all of the possible replacements and, at the bottom, the medicine
//! molecule for which you need to calibrate the machine. **How many distinct molecules can be
//! created** after all the different ways you can do one replacement on the medicine molecule?

use anyhow::Result;

pub const INPUT: &str = include_str!("d19.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() {}
}