diff --git a/day-5/.gitignore b/day-5/.gitignore deleted file mode 100644 index b83d222..0000000 --- a/day-5/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/day-5/Cargo.lock b/day-5/Cargo.lock deleted file mode 100644 index 80f8ea6..0000000 --- a/day-5/Cargo.lock +++ /dev/null @@ -1,78 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "day-5" -version = "0.1.0" -dependencies = [ - "indoc", -] - -[[package]] -name = "indoc" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47741a8bc60fb26eb8d6e0238bbb26d8575ff623fdc97b1a2c00c050b9684ed8" -dependencies = [ - "indoc-impl", - "proc-macro-hack", -] - -[[package]] -name = "indoc-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce046d161f000fffde5f432a0d034d0341dc152643b2598ed5bfce44c4f3a8f0" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "syn", - "unindent", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - -[[package]] -name = "proc-macro2" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quote" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "syn" -version = "1.0.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8833e20724c24de12bbaba5ad230ea61c3eafb05b881c7c9d3cfe8638b187e68" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" - -[[package]] -name = "unindent" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7" diff --git a/day-5/Cargo.toml b/day-5/Cargo.toml deleted file mode 100644 index f161c8d..0000000 --- a/day-5/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "day-5" -version = "0.1.0" -authors = ["Tristan Daniƫl Maat <tm@tlater.net>"] -edition = "2018" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -indoc = "0.3" diff --git a/day-5/input b/day-5/input deleted file mode 100644 index 8699311..0000000 --- a/day-5/input +++ /dev/null @@ -1,815 +0,0 @@ -BFBBFFFLRR -FFBFBBBLLL -FBFBFBFLLL -BBFFFBFLLR -FBFFBBFLRR -BBFBFFFLLL -FFBBFFFRLL -BFBFBBBRRR -FBFFBFFRLR -FBBBBBBLLL -BBFBBBBLLL -BFFFBBBLLL -FFBFFFBRLR -BFFFFBFLLR -FFBBBFBLRL -BFFBFBBRRL -FBFBFBBRRR -FBFFFBBRRL -FBFBBBFRLR -BFFFFFBRRL -BBFFFBBLRR -FFBBBBBRRR -FFBBBBBLLL -BBFBFFBRLR -FBFFBFBRRR -FFFBBBBRLL -BBFBFFBLLR -BFBFFFBRLL -FFBFBFFLLR -FBFBBFBRLL -FBFFBBBLLL -FBFBBBFRLL -FBFBFBBRLL -BFFFFBBRLL -FFFBBFFLLR -FFBFFFBLRL -FFBFBBFLLL -BFBBFBBLLL -BFFFFBBRRL -FFBFFFBRLL -BFBBFFFRRR -FFBBFFFLRL -FFBFBFBRLL -BFBFBBBLLL -BBFBBFFLRL -BFFFFBBLLR -FFBFBBFRLR -FFBBFBBLLR -FBFFBBFLLL -BFBFBFBLLL -BFFBFBBLLR -FBBBBFFRLR -FBBBFBFRLL -FBBBBFFLRR -BFFBBBBLRL -FBFFBBFLRL -BBFFFBBLLR -FBFBFFFRLL -FBBBFBBRRL -FFBBBFBLLR -BFFBBBFLLR -BFFFFBFRLR -BBFFFFBLLR -FBBFFFBRRL -BFFFBFBRRR -FBFBFFFRRR -BBBFFFBLRL -BFBFBFBLLR -BFBBBBBLRL -FFBBFBBRRR -FBBFFFBRRR -FFBFBFBRRR -BBFFFFBRRL -BFBBBBBLLL -BFBFBFFRLL -BFBFBFBRRL -BFBFFFFLRL -FFBBBBBLLR -FBBFBFFRLL -FBBFFBBLLL -BFFFFFFLRL -FFFBBFFLRL -FFFBBFFRLL -FFBFFFBLLL -FBBFBFBLRL -BBFFFFBRLR -FBBFBBBRLR -FFBBFFBLLL -FFBFFFBRRR -FBFBFBFRRL -FFBBBFBRRL -BBFFBFFLRR -FBFFFFFRRR -FBBFFFBRLL -FFBBFBBRRL -FFBBFFFLLR -FBFBBFBLLL -BFFFBBFLRR -BFBFBFFLRR -BFFFFBFRRR -BBFBBFFRLL -BFBBBBBLRR -BFBBBBFLLL -BBFBBBBLLR -FFBBBFFRRR -BBFFBFBLRR -FFFBBBFRLR -BFBFFFBLRR -BFFFBBFLLL -FBBBBFFLRL -FBBFFFFRRL -FFBFFBBRRL -BFBBBBBRLR -FBBFFBBLRL -BBFBFBBRLL -FBFFBFBRLR -FBBBBFFLLR -FBBFBBFRRL -FBFBBBBRLL -BFFBFBFRLL -FFBFBBFRRL -FBFFFBFRRL -FBFFBBFRRL -FFBFBBFRLL -BBFBBBBLRL -BFFFBBBRRL -FFBFFFBLRR -FFBBFBBLRL -BFBFBBFRRR -BFFFFFFRRL -FBBBBBBRRR -FBFBBFBLRR -FBFFFFFRLR -BFFBBBFLRR -BFBBFFBLLL -FBFFFFBLRL -FFBBBBBLRL -FFFBBBFRLL -FFBBFBFRLL -FBFBBBFLRL -FFBBBFBRLL -BBFBBFBLRL -FFBFBFFRLR -BBFBBBBLRR -FFFBBBBRRR -FBBBFBFLLL -BFFFBFBRLR -FBBFBBFRRR -FBFFBBBRLR -FBFBBFBRLR -FBBBFBBLLL -BBFBFBFLLL -FFBBFBBRLL -FBBFBBBLRR -BFFFBBFRRL -BFBFFBFLRR -BBFBBBFLLL -BFFFBBFRLR -BFBBFBFLRL -FBBBBBFRRR -FBFFFBBRRR -BBFFFFBLRR -FBFBFBFLRL -BBFFBBBRLL -FFBBBFFLRR -FFBBBBFLRR -FBFBFBBRRL -BBFBFFBRRL -FBBBFFBLLL -BFBFFFFLLR -FFBFFBFLRR -BFBBFFFLLR -BBFBBFFLRR -BFFFFFFLLR -BBFFBFBRRL -FBBBFBBRLL -BFBBBFBLLR -BFBBFFBRLR -FBFBBBFRRR -BFBBBBBRRR -FFBBFBBRLR -FBBFBBFRLR -BFFBBFBRLR -FBFFFFFLLL -FBBFFBFRLL -FBBBBFFRRL -FBFBBBBLRL -FFFBBFBLRR -FFBFFBBLRR -FFBBBBBLRR -FBBFFBFRRR -FBBBFBFRRR -FBBFBBBLLR -BFFFFBFLLL -FFBFFFFRRL -BFBFFBBLRL -FFBFFFFRLR -FBFBFBFRLL -BBFBFBBRRL -FFBFBBFLLR -BFBBFFBLLR -FBFFBFFLLL -BFFBBFBRRR -FBFFFBBRLL -BBFBBFFRRR -FBFBBFBLRL -FBFBFBBLRL -FBFFBBFRRR -FBFFBBBLRL -FFBFBBBRRR -BFBBBFFLLR -FFBBFFFRRL -FFBBBBBRRL -FFBFFBBRLL -FFBBFBFLLR -FBBBFBFLLR -BFFFBFFRLL -FFBBBFBLRR -BFFBBBFRRR -BFBBFBBRRR -BBFBFFFRRR -FBBFFFBLRL -BBFBBBFLLR -BBFFFBBLRL -FBBFFFFLRR -BFFBFFFRRL -FFBFBBBRLL -BBFBBFBRLL -FBFFFBBLRR -BFBFBBFRLL -FBFBBBBRRL -FFFBBBFLLR -FBFFFFBRRR -FBBBBBBRLR -BBFBFBFRRR -BFBFFBFRLL -BFBBBFFLLL -BFBBBFBLLL -FBFFBFBLRL -FFBFFFFLLR -FBBBBBFLLL -BBFFBFBLLR -BBFBBBFLRR -BFFFFFFRRR -BFFBFFBRRR -BFFBBFFLLL -FFFBBBFLLL -BFFBBFFRRR -BBFBBBBRRL -FBFBBFFLRR -BFBFFBBLLR -BFBFFBBRRL -BFBBFFFLLL -BFBFFBBRRR -BFBBFBFRRL -FBFBFFFLLR -BFBFBFFLLR -BFBBBBFRRL -BFFFBFFLRR -FBBFBBBRRL -BBFFFBBRLL -FFBFBBBLRR -FFBBFFBRLL -FBBBFBFRRL -FFBFFFFLRL -BFFFBBBRLL -BFBBBFFRRR -FFBFFBBRRR -BFBFFFBLLR -FBFFFBFLLR -FBFBBFFRRL -FFBFFBBLLL -BBFBBBFLRL -BFBFBBFRRL -BFFFBFFLLL -FBBBFFFRLL -BBBFFFFLLR -BFFBFFBLRL -BBFFBBBLLL -BFFBFFBLLR -BBFFBBBLRL -FBBFFBBLLR -FFBFBBFRRR -FBFBBFBRRR -BFBFFBFRLR -BFBBBFBRLL -FFBBBBFLRL -BFFBFBFLLR -BFBBFFFRLL -BBFBFBBLRR -FBBFBFFLLL -FBBFFFFLRL -FBBBBFBRRL -FFBBBFFRLL -FBBFBFFRRL -FBBBFBFRLR -FBBBFFBLRR -BBFFBBBLRR -FBBFFBFLLL -FBFBBFFRLL -FFBFBFFRLL -BFBFBBBRRL -FBFBBBFRRL -FFBFBBBLLR -BFFBFFFRLR -FFBFBFFRRL -BBFFFFFLRL -FBFFBFFLRL -BBFFFBFLLL -BFFBBFBLRR -BFBBFBFLLR -FBFBFBFLRR -BBFFBBFRLL -BBFBFBFRLL -BBFFFBFRLR -BFFBFBFRRL -BFFBFBBLRL -FFFBBBFLRL -FBBBFFFRRL -FFBFBBFLRR -FBBFBFBRLR -FFFBBFFRRR -FBBBBBBLRL -BBFFBBFRRR -FFBFFBFLLL -BFFFBBFLRL -FBFBBBFLRR -BBFFBFBLLL -FBFFBBFRLR -BFFBFBBLLL -BFBBFFBLRR -FFBBBFFLLR -FBFBFFFRRL -BFBBFBBRLL -BBFBBFBLRR -FBBFFFFLLR -BFFFBBFRRR -BBFFFBFRRR -BBFBBFFLLL -BBFFBFBRLL -BBBFFFFRLR -BFFFFBFRLL -FFBBBFFRRL -BFFBBBFLRL -BBFBBBFRLL -FBFFFFBRLL -BFBFFBFLRL -FFBFFBBLRL -FBBBBBBLRR -BBFFFBFRLL -BFBFFBBRLR -BBFBFFBLLL -BFFFBFFRRR -FFBFFBFLRL -FBBFBFFLRR -BBFBFFBRRR -BBFBFFBLRL -FBBBBFBLRR -BBFFBBBRRR -BBFFBFFLLR -FBBBFFBRLL -BFBFFBBLLL -FBBFBBBLLL -FFBBFBBLRR -FBBBBFFLLL -BFBFBBFLRL -BFBBBFBRRL -BFBBBBFRLL -FFBBFFFRLR -BBFBBBFRLR -BFBBFBBRLR -FFFBBBBLLL -BFFFFFBLRL -FBFBFFBRLL -FBBFBBBRLL -FBBFBBFRLL -BFBFBBFLLR -FFBBFBFLRL -FBBBFFBRRL -FFBFFBFRRR -BBFFFFBRLL -FBBFFBFRRL -BBFFFFFRLR -FBFBFFBLRR -BFFBBFBRLL -BBFFFFFLRR -BBFFBBBRRL -BBFFBFFRLR -FFBBFFBLLR -FBBFFFBLRR -BFFBBBBRLL -FBFBFBBLRR -FBBFBFBRLL -FBBBFFFRRR -FBBFFBBRLL -FFBFFFFRLL -FFBBBFBLLL -FBFFBBBLRR -FFBBFFBRRR -FFFBBFBRRR -FBFBFFBRRR -FFBFFBFRLR -BFFFFFFLLL -FFBFFBFRRL -BFBFBFFLLL -BFFBBBBRRR -BFFBBFBRRL -BBFFBBBRLR -BBFFBFFRRR -BBFBFBFRLR -FFBBFBFLRR -FBFFBFBLRR -BBFBBBBRLL -BBFFFFFLLL -FBFFBFFLRR -BBBFFFBRRL -BFFBFFBRRL -BFBBBFBRRR -FFFBBFBRLL -BFFBBFBLLR -BFBBBBFRLR -BFFFFBFLRL -FBBFBFBRRR -BFFBFBBLRR -BBFBBFBLLL -FBFBFFBRLR -FFBBBBFRLL -BFBFFBBRLL -BBFBBBBRLR -FFFBBBBLRL -FFFBBFBLLR -BFBBFBFLRR -FFFBBFBLRL -FBBBBBFLLR -FBFFBFBRLL -BFBFBBBRLL -BFBBBBFRRR -FBBFBFBRRL -BBFFBBFRLR -FFFBBBBRLR -BFBFBBBLRR -FBBBBFBRLR -BBFBFBBLRL -FFBBBFFRLR -BFBBBFFLRR -FBFBBBBLRR -FBBFFFBRLR -BFFFFFBLRR -BFFBBBBRLR -FBBBFFFRLR -BBBFFFFLRR -BFBFBFBRRR -FFBFFBFRLL -BBFBFBFLRR -BFBBFBBLLR -FFBBBBBRLL -FFFBBBBLRR -FBBFBBFLRL -BFFFBFBLLL -BFBFFFFRLL -FBFFFBFLRL -BBFFFFFRRR -FBBFBBFLLL -FBBFBFFRLR -FFFBBFFLRR -BFBBFFFRRL -FBFFFBBRLR -BBFBFFFRLL -FBBFFBBRRL -BBBFFFFRLL -BFBBBBBRLL -FFFBBFFRRL -FBBFFFBLLR -BFFFBFFLLR -FFBFFBFLLR -FBBFFBBRRR -BFFFFFBRLL -BFFFBFFRRL -BBFBBBFRRR -BFFBFBFLRR -FBFBBFFRLR -BBFFFBFLRR -BBFBFBFLLR -BFFBBBFLLL -FBFBFBBLLR -FBBBBBBRLL -FBFBFFFLRL -FFBBFFBRLR -BBFBBFBRRL -BBFBBFBRLR -BFFBBFFLRR -BFFBFFFLRR -BFBFBFFRRL -BBFBBBBRRR -FBFFFFFLLR -BBFFBBFLLR -BFFFBBBRLR -FBBBBFFRLL -BBFBBFFRRL -BBFFBFFRLL -BFBFBFBLRL -BFBFFFBLLL -BBFBFFFRLR -FBBBFFFLRL -FFFBBBBLLR -FFBFFFFLRR -BBFBFBFRRL -FBFFBBBRLL -FBBBFBBLRL -BBBFFFFLLL -FFBFBBBRRL -FBFBFFBLLR -FBFFFFFLRL -BFBFBBBLRL -BFFBBFFRLR -BFBFFBBLRR -BFFBFBBRLR -FBBFBFBLRR -FFBBBFFLRL -BBFFBBFLRR -FBBBFBBRRR -BFFFBBBLLR -BFBFBBBRLR -BFFBFBFLLL -BBBFFFBRRR -BBBFFFBRLR -FBFBBFFLLL -BFFBBFFLLR -FFBBFFBLRR -FBBBBBFRLR -BFBBFFBRRL -FBBBFFFLRR -FBFFFFFRLL -FFBFFFBLLR -BFFBFFFRLL -BFBFBFBRLL -BFFFFBBLRR -FBBFFBBLRR -BFBBBFBLRL -BBFBFBBLLR -BFBBBFBLRR -FBFFFBFLLL -BFBBBBBLLR -BFBFFFBRLR -BFBFBBFLLL -BBBFFFFRRR -FBBFFBBRLR -BBBFFFFLRL -FBBFBBBRRR -FFBBFBFRRL -BFFFBBBRRR -FFBFBFFRRR -BBFBFFFLRR -FFBFBBBLRL -BFBFBFFRLR -FFBBFFFRRR -FBFFBFBLLL -FBFFBFBLLR -BBFBBFFLLR -BFBBBFFRLR -BFFFFBBLLL -BFFBFFBRLL -FBBFFFFRLL -FFBFBFBLRR -FBBBBFBLLL -BFBFBFBRLR -FBBFBBBLRL -BFBFFBFRRL -FBBFBFBLLL -BFFFBFBLRL -BBFFBFFLLL -BBFFFBFLRL -FFFBBBFRRL -FBBFFFBLLL -BFFFFFBLLR -FBBBBFBRLL -BFFFFBBRRR -BFFFFBBLRL -FBBFFBFRLR -BBFFFFBRRR -FBFFFFBLLL -FFBFBFBRLR -BFFFBBBLRL -BFFFFFFRLL -BFBFFBFLLR -BBFFFBBRLR -FBBBBFBLRL -FBBBBFBRRR -BFFBFFFLLL -BFFBBBFRLL -BFBFBBFRLR -BBFFBFBRLR -FBBBBBFLRR -BFBBFBFRLR -FFBBFBFRLR -BFFFFFBRRR -BFFBBFFLRL -FBFFBFFRRL -BFBBFFFLRL -FBFFFBBLRL -BFFFBFFRLR -BFFFBFBRRL -FBBBBBFLRL -BBFFBBFLLL -FFBBFBBLLL -FFBFBFFLLL -BBBFFFBLLL -BFBFBBBLLR -FBBFFBFLRL -FBBBBFFRRR -BFBBBBFLLR -FFBFFFFRRR -BBFFBBFLRL -FBFBFBBRLR -BFBBFFBLRL -FBFBFFBLLL -BBFFBFFLRL -FBFBFFFLRR -FFBFBFBLRL -BFFBFBBRRR -FFBFBBBRLR -BFBBFFFRLR -BFBFFFFRLR -FFFBBFFLLL -BFBFFFFLLL -FFBFFBBRLR -FFBFBFFLRR -BFFBBFFRLL -BBFFBBBLLR -BFBBBBBRRL -FBFBBBBRRR -FBBFFFFRRR -FFBBBFBRLR -FFBFBFBLLL -BFFBFFFLLR -FBFBFBFRRR -BFFBBBBLLL -BFFFFBBRLR -FBFBBFFLRL -FFBFBFFLRL -FBBBFFBLLR -FBBFBFFLRL -FFBFBBFLRL -BBBFFFFRRL -FFBBFBFLLL -FFBBBBFRRL -BBFFFFBLLL -FFBBFBFRRR -FBFFFFFLRR -BFFBBBBRRL -BFBBFBBRRL -BBFBFBBRLR -FFBFFFFLLL -FBBFBFBLLR -FBFBFFBLRL -BBFBFBBRRR -BFFBBFBLRL -FFBBBFFLLL -FBBBFFFLLL -BFFFBFBLLR -FFBBFFFLLL -BFFBFFBLRR -FFBBFFFLRR -BFFBFBBRLL -FFBFBFBLLR -FBBBBBBLLR -FBFFFFBRLR -BFBBBFFRLL -FFBBBBFRLR -FFBFFBBLLR -BBFFFFFLLR -FBFFFBFRLR -BFBFFFFRRL -FBFFFBBLLL -BBFFFBBLLL -BFFBFBFLRL -BBFFFBFRRL -FBFFBBBRRR -FBFFFBBLLR -FFFBBFBRRL -BBFBFFFLRL -BFBFFFBRRL -BFBBBFBRLR -BFFFBBBLRR -FBBFBFFLLR -FBFBBBBRLR -BBFBBBFRRL -FFFBBFBRLR -BFFBFFFLRL -FBBBBBBRRL -BFFBFFBLLL -BFFBBFFRRL -FBBFBBFLLR -BFFBBBBLLR -BFBBBFFLRL -BFBFFBFRRR -BBFFFBBRRL -BFBFBFFLRL -BFBBFFBRLL -BFFFFFFLRR -FFFBBBFLRR -FBBFFFFLLL -FFBBFFBRRL -BFBFFBFLLL -FBFBBBFLLR -FFBBBBBRLR -BBFBFFBRLL -FBFBBFBRRL -FBBFFBFLRR -BFFFFFBRLR -FBFBBFBLLR -FBBBFFFLLR -BFFFFBFRRL -FBFFFFFRRL -FBFBFFFRLR -FBFBBBFLLL -BBFBFFBLRR -BFBBBFFRRL -BFBBFBFRRR -BBFFFFFRLL -FBFBFBFRLR -FBBBBBFRLL -BBFFBFBLRL -BBFFBBFRRL -BFBFFFFLRR -FBFFBBBRRL -FFFBBFFRLR -BBFFBFFRRL -BBFBBFBLLR -FBBFFBFLLR -FBFFFFBLLR -FFBFBFBRRL -FBFFFFBLRR -BFFBFFFRRR -FFFBBBFRRR -BFBFBFBLRR -FBFBBBBLLR -BBFFFFBLRL -BFBBFBFLLL -FBBBFFBLRL -BBFBFFFRRL -BBBFFFBRLL -FBBFBBFLRR -FBFBFFFLLL -FBBFFFFRLR -BFFBBBFRRL -BBFFFBBRRR -FBBBFFBRLR -FFBFFFBRRL -BFFFFFBLLL -FBFFFBFRLL -BBFFBFBRRR -BFFFFBFLRR -FFBBBBFLLR -BFBFBBFLRR -FBFBFBBLLL -BFFFBFBLRR -BBFBBFBRRR -BFBBFBBLRL -BBFBFBBLLL -FBBBFBFLRL -BFFFBBFRLL -FBBBBBFRRL -BFFBFFBRLR -BFFBBBBLRR -FFFBBFBLLL -BFBBBBFLRL -FBBBFBFLRR -FBFFFBFLRR -BFBFFFBRRR -FBFFBFFLLR -BFBFBFFRRR -BFFBFBFRLR -FBFFFFBRRL -BFFFBFBRLL -FBBBFBBLRR -BFBBFFBRRR -BFBFFFFRRR -BFFBFBFRRR -FFBBFFBLRL -BFBBBBFLRR -FBFFBBBLLR -FBFBBFFLLR -FBFFFBFRRR -FBFBBBBLLL -BFBBFBBLRR -BFBFFFBLRL -BFFBBFBLLL -FBFFBBFLLR -BBFBFFFLLR -BBFFFFFRRL -FBFBBFFRRR -BFFFBFFLRL -FBFBFBFLLR -BFFFFFFRLR -FFBBBBFRRR -BBFBFBFLRL -FBBBFFBRRR -FBFFBFFRRR -FBBBBFBLLR -BBBFFFBLLR -FBFFBFBRRL -FBBBFBBRLR -FBFFBBFRLL -BBBFFFBLRR -BFFFBBFLLR -FBFFBFFRLL -FFBBBBFLLL -FFBBBFBRRR -BBFBBFFRLR -FBBBFBBLLR -FBBFBFFRRR -BFBBFBFRLL -FFFBBBBRRL -FBFBFFBRRL diff --git a/day-5/src/main.rs b/day-5/src/main.rs deleted file mode 100644 index 81f9d27..0000000 --- a/day-5/src/main.rs +++ /dev/null @@ -1,114 +0,0 @@ -use std::fs; - -type SeatCode = [char; 10]; - -fn main() -> Result<(), Box<dyn std::error::Error>> { - let input = fs::read_to_string("input")?; - - // Part 1 - let max_id: Result<usize, String> = input - .lines() - .map(|code| { - let (row, col) = find_seat(parse_seatcode(code)?); - Ok(row * 8 + col) - }) - .max() - .ok_or("No seat codes set")?; - - println!("{}", max_id?); - - // Part 2 - let mut ids = input - .lines() - .map(|code| { - let (row, col) = find_seat(parse_seatcode(code)?); - Ok(row * 8 + col) - }) - .collect::<Result<Vec<usize>, String>>()?; - ids.sort(); - - let mut previous = ids[0]; - for id in &ids[1..] { - if id - 1 != previous { - println!("{}", id); - break; - } else { - previous = *id; - } - } - - Ok(()) -} - -fn parse_seatcode(input: &str) -> Result<SeatCode, String> { - let mut output = ['0'; 10]; - - for (i, c) in input.chars().enumerate() { - if i > 10 { - Err(format!("Seat code too long: '{}'", input))?; - } - - if !['F', 'B', 'L', 'R'].iter().any(|valid| &c != valid) { - Err(format!("Invalid character in seat code: '{}'", input))?; - } - - output[i] = c; - } - - Ok(output) -} - -fn find_seat(code: SeatCode) -> (usize, usize) { - let midpoint = |(start, end): (usize, usize)| (start + end) / 2; - let binary_follow = |range: (usize, usize), direction: &char| match direction { - 'F' | 'L' => (range.0, midpoint(range)), - 'B' | 'R' => (midpoint(range) + 1, range.1), - _ => unreachable!("We already checked all characters are valid"), - }; - - let row = code[..7].iter().fold((0, 127), binary_follow).0; - let col = code[7..].iter().fold((0, 7), binary_follow).0; - - (row, col) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_simple() -> Result<(), Box<dyn std::error::Error>> { - let input = "FBFBBFFRLR"; - let seat = find_seat(parse_seatcode(input)?); - - assert_eq!(seat, (44, 5)); - Ok(()) - } - - #[test] - fn test_simple2() -> Result<(), Box<dyn std::error::Error>> { - let input = "BFFFBBFRRR"; - let seat = find_seat(parse_seatcode(input)?); - - assert_eq!(seat, (70, 7)); - Ok(()) - } - - #[test] - fn test_simple3() -> Result<(), Box<dyn std::error::Error>> { - let input = "FFFBBBFRRR"; - let seat = find_seat(parse_seatcode(input)?); - - assert_eq!(seat, (14, 7)); - Ok(()) - } - - #[test] - fn test_simple4() -> Result<(), Box<dyn std::error::Error>> { - let input = "BBFFBBFRLL"; - let seat = find_seat(parse_seatcode(input)?); - - assert_eq!(seat, (102, 4)); - Ok(()) - } -}