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
//! # Day 12: Leonardo's Monorail
//!
//! You finally reach the top floor of this building: a garden with a slanted glass ceiling. Looks
//! like there are no more stars to be had.
//!
//! While sitting on a nearby bench amidst some [tiger lilies], you manage to decrypt some of the
//! files you extracted from the servers downstairs.
//!
//! According to these documents, Easter Bunny HQ isn't just this building - it's a collection of
//! buildings in the nearby area. They're all connected by a local monorail, and there's another
//! building not far from here! Unfortunately, being night, the monorail is currently not operating.
//!
//! You remotely connect to the monorail control systems and discover that the boot sequence expects
//! a password. The password-checking logic (your puzzle input) is easy to extract, but the code it
//! uses is strange: it's assembunny code designed for the [new computer] you just assembled. You'll
//! have to execute the code and get the password.
//!
//! The assembunny code you've extracted operates on four [registers] (`a`, `b`, `c`, and `d`) that
//! start at 0 and can hold any [integer]. However, it seems to make use of only a few
//! [instructions]:
//!
//! - `cpy x y` **copies** `x` (either an integer or the **value** of a register) into register `y`.
//! - `inc x` **increases** the value of register `x` by one.
//! - `dec x` **decreases** the value of register `x` by one.
//! - `jnz x y` **jumps** to an instruction `y` away (positive means forward; negative means
//! backward), but only if `x` is **not zero**.
//!
//! The `jnz` instruction moves relative to itself: an offset of `-1` would continue at the previous
//! instruction, while an offset of `2` would **skip over** the next instruction.
//!
//! For example:
//!
//! ```txt
//! cpy 41 a
//! inc a
//! inc a
//! dec a
//! jnz a 2
//! dec a
//! ```
//!
//! The above code would set register `a` to `41`, increase its value by `2`, decrease its value by
//! `1`, and then skip the last `dec a` (because `a` is not zero, so the `jnz a 2` skips it),
//! leaving register `a` at `42`. When you move past the last instruction, the program halts.
//!
//! After executing the assembunny code in your puzzle input, **what value is left in register
//! `a`?**
//!
//! [tiger lilies]: https://www.google.com/search?q=tiger+lilies&tbm=isch
//! [new computer]: super::d11
//! [registers]: https://en.wikipedia.org/wiki/Processor_register
//! [integer]: https://en.wikipedia.org/wiki/Integer
//! [instructions]: https://en.wikipedia.org/wiki/Instruction_set
use anyhow::Result;
pub const INPUT: &str = include_str!("d12.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() {}
}