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
//! # Day 21: Allergen Assessment
//!
//! You reach the train's last stop and the closest you can get to your vacation island without
//! getting wet. There aren't even any boats here, but nothing can stop you now: you build a raft.
//! You just need a few days' worth of food for your journey.
//!
//! You don't speak the local language, so you can't read any ingredients lists. However, sometimes,
//! allergens are listed in a language you **do** understand. You should be able to use this
//! information to determine which ingredient contains which allergen and work out which foods are
//! safe to take with you on your trip.
//!
//! You start by compiling a list of foods (your puzzle input), one food per line. Each line
//! includes that food's **ingredients list** followed by some or all of the allergens the food
//! contains.
//!
//! Each allergen is found in exactly one ingredient. Each ingredient contains zero or one allergen.
//! **Allergens aren't always marked**; when they're listed (as in `(contains nuts, shellfish)`
//! after an ingredients list), the ingredient that contains each listed allergen will be
//! **somewhere in the corresponding ingredients list**. However, even if an allergen isn't listed,
//! the ingredient that contains that allergen could still be present: maybe they forgot to label
//! it, or maybe it was labeled in a language you don't know.
//!
//! For example, consider the following list of foods:
//!
//! ```txt
//! mxmxvkd kfcds sqjhc nhms (contains dairy, fish)
//! trh fvjkl sbzzf mxmxvkd (contains dairy)
//! sqjhc fvjkl (contains soy)
//! sqjhc mxmxvkd sbzzf (contains fish)
//! ```
//!
//! The first food in the list has four ingredients (written in a language you don't understand):
//! `mxmxvkd`, `kfcds`, `sqjhc`, and `nhms`. While the food might contain other allergens, a few
//! allergens the food definitely contains are listed afterward: `dairy` and `fish`.
//!
//! The first step is to determine which ingredients **can't possibly** contain any of the allergens
//! in any food in your list. In the above example, none of the ingredients `kfcds`, `nhms`,
//! `sbzzf`, or `trh` can contain an allergen. Counting the number of times any of these ingredients
//! appear in any ingredients list produces **`5`**: they all appear once each except `sbzzf`, which
//! appears twice.
//!
//! Determine which ingredients cannot possibly contain any of the allergens in your list. **How
//! many times do any of those ingredients appear?**

use anyhow::Result;

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