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
//! # Day 13: A Maze of Twisty Little Cubicles
//!
//! You arrive at the first floor of this new building to discover a much less welcoming environment
//! than the shiny atrium of the last one. Instead, you are in a maze of twisty little cubicles, all
//! alike.
//!
//! Every location in this area is addressed by a pair of non-negative integers (`x,y`). Each such
//! coordinate is either a wall or an open space. You can't move diagonally. The cube maze starts at
//! `0,0` and seems to extend infinitely toward **positive** `x` and `y`; negative values are
//! **invalid**, as they represent a location outside the building. You are in a small waiting area
//! at `1,1`.
//!
//! While it seems chaotic, a nearby morale-boosting poster explains, the layout is actually quite
//! logical. You can determine whether a given `x,y` coordinate will be a wall or an open space
//! using a simple system:
//!
//! - Find `x*x + 3*x + 2*x*y + y + y*y`.
//! - Add the office designer's favorite number (your puzzle input).
//! - Find the [binary representation] of that sum; count the **number** of [bits] that are `1`.
//! - If the number of bits that are `1` is **even**, it's an **open space**.
//! - If the number of bits that are `1` is **odd**, it's a **wall**.
//!
//! For example, if the office designer's favorite number were `10`, drawing walls as `#` and open
//! spaces as `.`, the corner of the building containing `0,0` would look like this:
//!
//! ```txt
//! 0123456789
//! 0 .#.####.##
//! 1 ..#..#...#
//! 2 #....##...
//! 3 ###.#.###.
//! 4 .##..#..#.
//! 5 ..##....#.
//! 6 #...##.###
//! ```
//!
//! Now, suppose you wanted to reach `7,4`. The shortest route you could take is marked as `O`:
//!
//! ```txt
//! 0123456789
//! 0 .#.####.##
//! 1 .O#..#...#
//! 2 #OOO.##...
//! 3 ###O#.###.
//! 4 .##OO#OO#.
//! 5 ..##OOO.#.
//! 6 #...##.###
//! ```
//!
//! Thus, reaching `7,4` would take a minimum of `11` steps (starting from your current location,
//! `1,1`).
//!
//! What is the **fewest number of steps required** for you to reach `31,39`?
//!
//! [binary representation]: https://en.wikipedia.org/wiki/Binary_number
//! [bits]: https://en.wikipedia.org/wiki/Bit
use anyhow::Result;
pub const INPUT: &str = include_str!("d13.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() {}
}