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
80
81
82
83
84
85
86
87
88
89
//! # Day 7: Some Assembly Required
//!
//! This year, Santa brought little Bobby Tables a set of wires and [bitwise logic gates]!
//! Unfortunately, little Bobby is a little under the recommended age range, and he needs help
//! assembling the circuit.
//!
//! Each wire has an identifier (some lowercase letters) and can carry a [16-bit] signal (a number
//! from `0` to `65535`). A signal is provided to each wire by a gate, another wire, or some
//! specific value. Each wire can only get a signal from one source, but can provide its signal to
//! multiple destinations. A gate provides no signal until all of its inputs have a signal.
//!
//! The included instructions booklet describes how to connect the parts together: `x AND y -> z`
//! means to connect wires `x` and `y` to an AND gate, and then connect its output to wire `z`.
//!
//! For example:
//!
//! - `123 -> x` means that the signal `123` is provided to wire `x`.
//! - `x AND y -> z` means that the [bitwise AND] of wire `x` and wire `y` is provided to wire `z`.
//! - `p LSHIFT 2 -> q` means that the value from wire `p` is [left-shifted] by `2` and then
//!   provided to wire `q`.
//! - `NOT e -> f` means that the [bitwise complement] of the value from wire `e` is provided to
//!   wire `f`.
//!
//! Other possible gates include `OR` ([bitwise OR]) and `RSHIFT` ([right-shift]). If, for some
//! reason, you'd like to **emulate** the circuit instead, almost all programming languages (for
//! example, [C], [JavaScript], or [Python]) provide operators for these gates.
//!
//! For example, here is a simple circuit:
//!
//! ```txt
//! 123 -> x
//! 456 -> y
//! x AND y -> d
//! x OR y -> e
//! x LSHIFT 2 -> f
//! y RSHIFT 2 -> g
//! NOT x -> h
//! NOT y -> i
//! ```
//!
//! After it is run, these are the signals on the wires:
//!
//! ```txt
//! d: 72
//! e: 507
//! f: 492
//! g: 114
//! h: 65412
//! i: 65079
//! x: 123
//! y: 456
//! ```
//!
//! In little Bobby's kit's instructions booklet (provided as your puzzle input), what signal is
//! ultimately provided to **wire `a`**?
//!
//! [bitwise logic gates]: https://en.wikipedia.org/wiki/Bitwise_operation
//! [16-bit]: https://en.wikipedia.org/wiki/16-bit
//! [bitwise AND]: https://en.wikipedia.org/wiki/Bitwise_operation#AND
//! [left-shifted]: https://en.wikipedia.org/wiki/Logical_shift
//! [bitwise complement]: https://en.wikipedia.org/wiki/Bitwise_operation#NOT
//! [bitwise OR]: https://en.wikipedia.org/wiki/Bitwise_operation#OR
//! [right-shift]: https://en.wikipedia.org/wiki/Logical_shift
//! [C]: https://en.wikipedia.org/wiki/Bitwise_operations_in_C
//! [JavaScript]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
//! [Python]: https://wiki.python.org/moin/BitwiseOperators

use anyhow::Result;

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