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
//! # Day 15: Timing is Everything
//!
//! The halls open into an interior plaza containing a large kinetic sculpture. The sculpture is in
//! a sealed enclosure and seems to involve a set of identical spherical capsules that are carried
//! to the top and allowed to [bounce through the maze] of spinning pieces.
//!
//! Part of the sculpture is even interactive! When a button is pressed, a capsule is dropped and
//! tries to fall through slots in a set of rotating discs to finally go through a little hole at
//! the bottom and come out of the sculpture. If any of the slots aren't aligned with the capsule as
//! it passes, the capsule bounces off the disc and soars away. You feel compelled to get one of
//! those capsules.
//!
//! The discs pause their motion each second and come in different sizes; they seem to each have a
//! fixed number of positions at which they stop. You decide to call the position with the slot `0`,
//! and count up for each position it reaches next.
//!
//! Furthermore, the discs are spaced out so that after you push the button, one second elapses
//! before the first disc is reached, and one second elapses as the capsule passes from one disc to
//! the one below it. So, if you push the button at `time=100`, then the capsule reaches the top
//! disc at `time=101`, the second disc at `time=102`, the third disc at `time=103`, and so on.
//!
//! The button will only drop a capsule at an integer time - no fractional seconds allowed.
//!
//! For example, at `time=0`, suppose you see the following arrangement:
//!
//! ```txt
//! Disc #1 has 5 positions; at time=0, it is at position 4.
//! Disc #2 has 2 positions; at time=0, it is at position 1.
//! ```
//!
//! If you press the button exactly at `time=0`, the capsule would start to fall; it would reach the
//! first disc at `time=1`. Since the first disc was at position `4` at `time=0`, by `time=1` it has
//! ticked one position forward. As a five-position disc, the next position is `0`, and the capsule
//! falls through the slot.
//!
//! Then, at `time=2`, the capsule reaches the second disc. The second disc has ticked forward two
//! positions at this point: it started at position `1`, then continued to position `0`, and finally
//! ended up at position `1` again. Because there's only a slot at position `0`, the capsule bounces
//! away.
//!
//! If, however, you wait until `time=5` to push the button, then when the capsule reaches each
//! disc, the first disc will have ticked forward `5+1 = 6` times (to position `0`), and the second
//! disc will have ticked forward `5+2 = 7` times (also to position `0`). In this case, the capsule
//! would fall through the discs and come out of the machine.
//!
//! However, your situation has more than two discs; you've noted their positions in your puzzle
//! input. What is the **first time you can press the button** to get a capsule?
//!
//! [bounce through the maze]: https://youtu.be/IxDoO9oODOk?t=177

use anyhow::Result;

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