diff --git a/input/2020/day5.txt b/input/2020/day5.txt new file mode 100644 index 0000000..1de357f --- /dev/null +++ b/input/2020/day5.txt @@ -0,0 +1,927 @@ +BBFBFFBRLL +FBFBFFBRRR +BBBFBFFLLR +BFBBFFBRRL +BBFFBBBRRL +BFFFFFBLRR +FBBBFBFLLL +FBBFBFFLRR +FBFFFFBRLR +FBFBFBFLRL +FFBBFFFLRR +BFFBBBFRRL +FFBBFBBRRR +BFFBBFFRRR +FBBFBBFRLR +BFFFFBBLRL +BFFBFFBRLL +BFFFBFFRLL +BBFFFBFRLL +FFFFBFBLLR +FBFBFFBLRR +FBBFFFFRRL +FBBFFFFLRL +BBFBFFFLRR +FFBFBBFLLR +FFFFBFBRRL +BFFFBBBLRR +BBFBFBFRRL +FFBFBFBRRL +FFFBBBBRRL +FBBBBBBLLR +FFFFFBFRLR +FBBFBBBRRL +FBBBBFFRLR +FFBBBFFRLR +FFBBBFFLRR +FFBBBBBRLR +FFBFFFBRLR +FBFBFFBLRL +BFBBBBFRRR +FBFFBFFRRL +BFFFBFFLRL +BBFBFBBRRR +BFBFBFFLRR +BFFFBBBRRR +FBBFFBFLRR +BFFBFBFLRL +BFBBBFBRRL +BFBFBFBRRR +FFFBBFFRLR +FFFFBBBLRR +BFBFFBBRLL +BBFFBBBLLR +FBFFFBFLLL +FFBFBBFRRL +FFFBBFFLLR +FBBFFFBRRL +FBFFBBBLRL +FFBBFBBLLL +FBBBBBBRRR +FBBBBFFLRR +FBFFFFFLLL +FBFBFBFLLL +BBFFBFBLRL +FBFBBFFRLR +FFFBFFBRLL +FFBFFBFRRL +FBBFFFFLRR +FBFFFFFRLR +FFFBFBBLLR +FBBBFFBRLL +BBFFBBFLRR +FBBFBBFLLL +FFBFBBBLRR +FFFFFFBLLL +BFFFBBFLLR +FFFFBBFLLL +BFBFBFBLRL +BFBBFFBRRR +BFBBFBBRLR +FFFBFFFLRL +BBFBBBBLRL +FFBFBBBRRR +BFFFBFBRLL +BBFFFBFRRR +BFFFFFFRRL +BFBBFFFRLR +FFFFBFBLRL +FBFBFFBLLR +BBFFFBFRLR +FFBBFFFRLL +FBBBFBFRRR +BFFBBFFLLR +FFFFBFBRRR +FBFFFBBRLL +FBBFFFBRLR +BFBFBBFLLL +BFFBFFBRRR +FFBBBFBRLL +BFBFFBBLLL +FFBFFBBLLL +FFBBFBFRLL +BFFFBBFLRL +BBFBBFFLRL +BFBBFFFRLL +BBFFFFFRLR +FFFBBFBLRR +BBFFBBBRRR +FBFFFBFRRL +BFBFFBFRRR +FBFBBFFLRR +FBBFFBFLRL +FBBBBFBLLL +BFBFFBFLRR +BFFBFBBRLR +FFBBBFBRRR +FBBBBBFLRL +BFBBFFBRLL +BFFBFBBRRL +BBBFFBFRRR +FBBFFBBRLL +BFFFFBBLLL +BFBBBFBRLL +BFFFBBFRLR +FFBFFFBLLR +BFBBFFFRRL +BFFBFBFRRR +FBFFBFBRLR +FBFFBBFLLR +BFFFFFBRRR +FFFFFBBRLR +FBBFFFBLLL +BFFFFFBRRL +BBBFFFFLRR +BFFFBBBRLL +BFFFFFBRLR +FFFBBBBLRL +FBBFFBBLRL +FBBBBFFLLR +BFBFBFBRLL +FBFBBFFLLR +FFFFFBFLLL +FBBBFFFRLL +BFBBFFFLLR +FBFBBFFRLL +FBFBBFBLLL +FBFBFFBRLL +BBBFFFBRRL +FFBBFBFLLR +FFFFFFBRLL +BFBFBFBRRL +BFFBFFBLLL +FBBFFFBRLL +FFFFBBBLLR +FFBFFFBLRL +FBFBBBBRRR +FFBFBBBRLL +BFBFBFFRRR +FBBFBFFRRR +FBBFFFBLLR +FBBBFFFLRR +BBFFFFFRLL +FBBBBBBRLR +BFBFBBBRLL +BBFFBBFRRL +BBFFFFFLLR +FFBFFFBRLL +BBFBBFBLLL +FFBFFBFLRR +FBBBFFBRRR +FBFBFBFRRL +FBFBFBBRLL +FFFFFFBRRL +FBBFFBFRLR +FBFFFBFRLL +FFBBFFBRRL +FBFFBBBLLL +FFFBFBFLRL +BBFFFFBRRR +FFBFBFBLRL +FBBBFFFLLR +FBBBFFFRRR +BFFFFBBRRL +BFFBBBFLLR +BBBFFBFRLR +FBFBFBFLRR +FFFFBFBLLL +BFBBFFBLLL +FFFFBBFRLL +FFBBFFFRRR +BBFBFBFLRL +FFBBBBBRRR +FBBBFBBLLR +FBBBFBBRRL +FBFBFBFLLR +BFFFBFFLLR +BBBFFBBLRL +FFFFFBBLLL +FBFBBBFLLR +FBFBFBBRRR +BFFFBBFRLL +BFFBFFFLRL +FFFFFBBLRR +BFFBFFBLRL +FBBFFBBRRR +FFBFFBFLRL +FBFFBBBLLR +BBFBBFBRLR +BFBBFFFLLL +FBFBBBFRLL +BFFFFBFLRL +BBFBBFFRRR +BBFBBBFRRR +FFBFFFBRRL +FFFFFFFRRR +FBBFBBBRRR +BBBFFBFLLR +BFFBFFBRLR +FFBFFFBLRR +BBFFFBFLRR +BBBFFFBLRL +FFBBFBFLLL +BBFBFFBRLR +BFBFFBFLRL +FBFFFBBLLL +FBBBBBFLLR +BFBFFFBLRL +FFFBBBBLLL +FBBFBBFRRL +FBBFFBFLLL +FFBBBFFRRL +BFFFBBFRRR +FFBFBBFRLL +FFFBFFFRLL +FBBFFFBLRR +BBFFBBBLLL +FBFFBFFRLR +BBFBFFFRLR +FBFBBFFLLL +BBFFFBBRLL +BBBFFBBLLL +BFBFFFFRLR +FBFBBFBLLR +FBFFFBFLLR +FFBBFBFLRR +BFFBFFFLLR +BBBFFFBRLR +BFBBBBBRRR +FFFBFFFRRL +FFBBBBBRRL +BBFBFBFLLR +BBFFFFFRRR +FBFFBBFRRL +FBFFBFBLRR +BFBFFFBRRL +FFFBFBFLRR +FFBBFFBRLR +BFFBFBFLRR +FBBBBBFLLL +BFBFFFBRRR +BBFBFBBRLR +BFFBFBBLLL +FBBFFFFRLR +BFBFBFFRRL +FFFFBBBRLR +FFFBBFFRLL +FBFFBBBRLL +FFBBBBBRLL +BFFFFBFRRR +FBBFBBFLRR +FFBFBFBRLR +FBFBFFBRRL +FFFFBFFLRR +BFBFBFFRLR +FFFFFFBRRR +BFBBBBFRLR +FFBFBBBLLR +FBBBFFBLRR +FFBFBFFLRL +BBBFFFBLLL +FFBFFFBLLL +BFBFFFBRLR +BFFFBFFLRR +FFBFBFFRRL +FFFFFBBRRR +FFBBFFFLLR +FBFFBFFRLL +FBFFBBFRLL +FFFFBBFLRL +FFFBFFFLLL +BFFBFBBRLL +FBFFFFFLLR +FFFFFBBRRL +FBFBFFFRRL +FBFBFBBRLR +FFBBFFBLRR +BBFFBFBLLR +BFFBFBFLLL +FBFBFFFLRL +FFFFBBFRRR +FFBFFFFRLL +FBFBBFBRRL +FBFBBFBRLR +BBFFFFBLRL +BFFFFBFRLL +FFBFBBFRLR +FFBFFBBLRR +BFFFFFFRRR +FBBBFBFLRL +FBFFBFBRRR +FBFFBFFRRR +BFBFBFBLLR +FBBBBBBRRL +BFBFBFBLRR +BBFFBFBLLL +BFFBBBBLRL +BFFBBBBLLR +FFBFFBBRLL +BBBFFBBRLR +BBBFFFFLLL +BFBBFBFLRL +BBFBFFBLLR +FFFBBFBRRL +BFBBFBBLRL +FFFFBFFRLL +FFBBBFFLLR +FFBBBFBRRL +FFBFFFFRRL +FBBFFFBLRL +BBFFFBBLRR +FFBBBBBLLR +BBFBBBBRLL +BFFFBFFRRR +FFFFBBBRLL +FFBFFBBLLR +BFBBFBFRRL +FFBFBBFLRL +FBFFFFBRRL +BFFFFFBLRL +FFFBBFBLLL +FBFFFFBLRL +BFBBFFFLRR +FBBBFBBLRR +BFBBBBBLLR +FFBFFBFRLR +FFBFBBBLRL +FBFFFBFRLR +FFBBFFBLLR +BBFFBBFRLR +BBFFFBBRRR +BBFFBBFRLL +FFBBFFBLLL +FBBBBFBLRL +FFFFBBBLRL +BBFBBBBRRR +FFBFBFBLLL +BFFFFBBLLR +BFFBFFFRLR +BFBFBFFLRL +FFFBBBBRLR +FFBBBBBLRL +BFBBBBBLRL +BBFFFFFLRR +FBBBFFFLRL +FBFBFFBRLR +BFFBFFFLRR +FFFFFBFLLR +BFBBBBFLRR +BFBBBFBLLL +BBFBBFBRRL +BBFFBFFLRL +BFBBBBBRLL +FBBFBBBRLR +BBFFBBBLRR +FFFBBFBLLR +BFFFBBBLRL +FFFBFBBRLL +BBFBBFFRLR +BFBFFBBRRR +FFFBFBFRRL +FFFBFFFLLR +BBBFBFFRLR +FFFBFFFRLR +FBBFBFBRRR +FFBBBBFRRR +FBBBFBFLLR +BBBFBFFLRL +FFBBFFFRLR +FFFBFFFRRR +FFBFFFFLLR +BFFBBFBLRR +FBFFBFBLRL +BBFBFBFRRR +BBBFFFFLLR +FBFFBFFLRR +BFFFFFFLLL +FBFBBFBRLL +FFBFBFFRLL +FBFFBFBLLL +FFBBBBBLLL +FFFFBFFLLL +FBBBBFBRLR +FFBBBBFLLL +FFBBBFFRLL +FFFBFBFLLL +BFBBBBBLLL +FBBFFFFRRR +BFFBBFBRLR +FBFFFBBLRL +FBBFBFBLRR +BBFFFFBLLR +FFBBBBFLRR +FFBFBBFLRR +BBFBBFBRRR +FBFBFBFRLL +BFBFBBBLLL +BFBBBFBRLR +FFFBFBFRLR +BFBBBFFRRR +FFFFBBBLLL +BFBFBBBRRR +FBBBBFFRRL +BBFBFFFLLL +FBBBFBFRLR +BFBBBFFLLR +FBFFFFFLRL +BFBFFBFLLL +BFFFFBFLLL +BFBBFFBLLR +FBBFBBBRLL +FFFBBBFLRR +FBBBBFFLLL +FFBBBBFLLR +BFBFBFBLLL +BFBFBBFRLR +FBBFBBFRLL +FBFFFBFLRR +BFFBBFFRRL +FFFBBFBLRL +FBFFFFFRLL +BFFFFBFRRL +FFFBBBBRLL +BFFBFFBRRL +FBBFFFFLLL +FFBBFBBLRR +BFBFFFBLLL +BFBFFFFLLR +BBFBFFBRRR +BBFBBFFRLL +FFFBBBFLLR +BFFBBBBRRR +FBBBBBBLRR +FFBFFBBLRL +FBBFFBBRLR +BFFFBFFRLR +FBBBFFBLLL +FFFBFBFRLL +BFFBFFFRRL +BFFFBFBRRR +BFBFFFFLRR +FFFBFBBLRR +BBFBBBFLLL +FBBFBFFRLR +BBFFBBFLLL +FBFFBBFRRR +BFFFBFBLRL +BFFFFBFLRR +BFFFFBFRLR +BBFFBBBRLR +FBBFBFBRLL +FBFBBFFRRL +BBFFBFBLRR +FBBFFBBLRR +BBFFBFBRRL +FFBBBBFLRL +FFFBFBFLLR +BBBFFFFRLR +BFBFFBBRLR +BFFBBFFRLR +BFFFFFFLRR +BBFFFFBLRR +FFFFBFFLRL +FBBBBBFLRR +BFBFFFFRRR +FBBBFBFLRR +BFBFBBFRLL +FBBFBBFLLR +FBFFFFFRRR +FBBFFBFRLL +FBFBFFFRLR +FFBBBFBLLR +FBBBBFFLRL +BBFFFFBRLL +FBBBBBFRRL +FBBBBFFRLL +BBFFBFBRLR +FBFBFBBRRL +FBBFBFBLLL +FBFFBFBLLR +BFBBBFFLLL +FFBFFBBRRL +BBFBFBBLLL +FBBBFFFLLL +FBFBBBBLLL +FBFFBFFLLL +FFFBBFFLRL +BBFFBBBLRL +BFFFBFBRLR +BBFFFFBRLR +BBFBBBBLLR +BFFBBFBLLR +FFFBBFBRLL +BBFFFBFRRL +FFBFFFBRRR +BBFBFBBRLL +FBFBFBBLLR +FBBFFBFRRR +FBBBFFBLLR +BFFFBBBRRL +BFFBBFBLRL +FBFFBBFLLL +BFBFBFFRLL +BFBBBFBLLR +FBFFBFFLLR +FBBFBFFLLR +BFBFFFBLRR +FBBFFBBLLL +FFBFBFFLLL +FFBBFFBRLL +FFBFFBFRRR +FBFBFFFRLL +BBFBBFFLLL +FBFBBBBRLR +FFFBBBFRLL +FFBFFBFLLR +BFFFFBBRLR +FFBFBBBRRL +FFFFBFFRLR +FFBBFFFLLL +FBFFFFBLRR +FBBBBFBRLL +FBFFBBBLRR +FFFBBFBRRR +BFBBFBFRRR +BFFFBFBLRR +BFBFFBFRRL +FFFBBBBRRR +FBBFBFFRRL +BFBBFFBLRR +FBBFBBBLRR +BFBBFBBRRR +FFFFFBFLRR +FBFBBBFLRR +BBBFFFFRRL +BBFFFBFLLL +BBBFFFFLRL +FFBBBBBLRR +BBBFFBFLLL +FBFBFBBLRR +FFFBFFBLRR +FFBBBFBLLL +BBFFFBFLLR +FFFFBBFRRL +FBFBBFBLRL +BBFBBFFLRR +BFBFBFBRLR +FFBFFBFRLL +BFBBBFFRRL +FFBBFBBLRL +FBFFFFFRRL +FBFFFFBLLR +FFBFBFFRLR +BFBBFBFRLL +FBFBBBFRRR +FBFBBBBLRL +FFFBFFBRRL +BFFFBFBLLR +BFBFBBFLRL +BBFBFBBLLR +BBFFFFFLRL +FFFBBFFLRR +BFFBFBBLRR +BBFFBBBRLL +BFBBFBBRLL +BFFBBBFRRR +FBFBFFFRRR +FBFBFFFLLR +FFFBBBFLRL +BBFBBFFRRL +BFFFFFFRLR +FFBBBFBRLR +FFFFBBBRRR +FFFBFBBRLR +FBFBFFBLLL +BBFBFFBLRR +FBFFFFFLRR +FFFBFBBLRL +FBBBBFBLLR +FBBBFBBLLL +FFBBBBFRLL +FBFFFBFRRR +FFFBFFFLRR +BFFBFFBLLR +BBFBBBFRLR +BFBFFBBLRR +FFFBBFBRLR +BFBBFBFRLR +FBFFFBBLLR +FBFBFFFLRR +BFFFFBBRRR +BBFFFFBLLL +BFFBFFBLRR +BFBFFBFLLR +FBFBFBBLRL +BFFBBBFRLL +FFFFBFBRLL +FFBFFFFLRR +FBBFBBFRRR +BFFFBFBRRL +BFFFFBBLRR +FFFFFBBRLL +FBFFBBBRRR +FFFBBFFLLL +FFBFBFBRLL +BFFBFBBRRR +FFFFBBFLRR +FBBFBBFLRL +BBFFBBFLRL +FBBBFBFRRL +FFFBFBBLLL +FFFBFFBRLR +FFFFFBFLRL +BFFFFFBLLL +BFFBBFFLLL +FBBFBFBRLR +FBFBFBFRLR +FBBBBFBRRR +BFFFFFFLRL +BFBFBBBRLR +FBFBBBBRRL +BFBBBFFLRR +BFBFFFFRLL +BBFFFBBLRL +BBFFFFBRRL +BBFBFBBRRL +BFFBBBFLRR +BBBFFFBLLR +BBFFBFBRLL +FBBFFBFRRL +BFFFFFFLLR +FFFFFBBLLR +FBFBBFFLRL +BBFBFBFLLL +BBFBBBBLRR +FFBFFFFLLL +FBFFFBBRRR +BBFBFBBLRL +BFBBBBBRLR +FBBFBBBLRL +BBFBBBFRRL +BBFBFFFLRL +FFBFFFFRLR +FFFFBFFLLR +FBFBBBBLLR +BFBBFBFLLR +FBFFBBFRLR +BFFFBFBLLL +FBFBBBBLRR +BBFBFFFRRL +FBFBBBFLRL +BFFBBFBLLL +BFFBBBBRLR +FBBBFBBLRL +BFBBBFFRLL +BFBBBFBLRR +BFBFBBFRRL +BFBBFBFLRR +FBFFBBFLRR +BBBFFBFRLL +BBFBBFBLRL +BBFBFFFLLR +FBBBBBFRLL +FBFBFFFLLL +FFBFBFBLRR +FBBBFFFRRL +FFFFBBFRLR +FFBFBBBLLL +FBBFBFFLLL +BBBFFFBRLL +BFBFBBBLLR +BBFBBFBLLR +FFFFBFFRRL +FBFBBBFRLR +BFFBBFBRRR +BFBFBFFLLL +BFBBBFBRRR +FBFFBBBRLR +BFBBFFBRLR +BBFBBFFLLR +FFBBFBFRRR +BBFFFFFRRL +FBBFBBBLLR +BBBFFFFRLL +FBFFBFBRRL +BFFFFFFRLL +FBBBBBFRLR +FBBBBBBLLL +BFFFFFBLLR +BBBFFBFLRR +BFFFFBBRLL +BFBBFFFLRL +BBFBBBBRLR +FBFFBBBRRL +BBFFBFFLLR +BFFFBBBRLR +BFBBFBBLRR +BBBFBFFRLL +FBFFFFBRRR +BFBBBFFLRL +FBBFFFFRLL +FFBBFBBLLR +BFFBFFFRRR +BFBFFBBLRL +FBFBBBFLLL +FBBFFBBLLR +FBBBFBBRLL +FBFFFFBRLL +FBFBBFBRRR +FFBFFBBRRR +FBBBFFBRRL +FFBFBBFLLL +FFBFBFBRRR +FFBBFBFRLR +FFBBBBFRRL +FBBFFBFLLR +FBBFBFBLRL +FFBBBFFRRR +FFBFBFFLLR +BBFFBFBRRR +BFFBBBBRRL +FFFFFBFRRL +FBFFBFFLRL +FBBBFBFRLL +FFBBBFBLRR +FFFBFFBLLR +BFFBFBFRLL +FFFBFBBRRL +BFFBFFFRLL +FBBBFFBRLR +FFFBFBBRRR +BBFBFFFRLL +BBFFBFFLRR +BFFBFBFRRL +FFFBFFBLRL +BBBFFBFLRL +BFFBFBBLLR +FFBFBFBLLR +FFFBFBFRRR +FFBBFFBLRL +BBFFBBFLLR +FFBBFBBRLL +FFBBBBFRLR +FFFFBFBLRR +FFBFBFFLRR +BFBBBBBLRR +FBBFBFFLRL +FFFFFFBLRR +BFBBBBFLRL +BBBFFBBLLR +BFFFBBFRRL +FFFFBBBRRL +FBFFFBFLRL +BBFBBBBLLL +BFBBBFFRLR +BFFBBBBLLL +BFFFFFBRLL +BBFBBBBRRL +BFBFBBBLRR +FBFBBBFRRL +BFBFFFBRLL +BFFBBFBRRL +FBBBBFBLRR +BFBBFFBLRL +FFFFFFFRRL +BFBFBBBRRL +BFBBFBBRRL +FFBFBFFRRR +FFBBFFBRRR +FFFBBBBLLR +FBBFBFBLLR +BBFFFBBLLR +FFFBBBFLLL +FFFBBFFRRL +FFFBBFFRRR +FFBBFFFLRL +FBFBBFBLRR +BFFBBFBRLL +FFBBFBFLRL +FFFBBBFRLR +BBFBBFBRLL +FBFBBFFRRR +BFFBBFFLRL +BBFFBFFRRR +BBFBBBFLRR +FFFBBBFRRL +BBFFBFFRRL +FFBFBBFRRR +BBFFFBBRLR +FFFFBBFLLR +FFFFFFBLRL +BBFBFFFRRR +BFBFFFBLLR +FBFFFFBLLL +FBBBBFFRRR +BFFFBBFLRR +FFBBFBBRLR +BFFFBFFRRL +BBFBFFBLLL +FBBFBFFRLL +BFBFFBBRRL +BFFBBBFLLL +FBFBFBFRRR +BBFFBFFLLL +BFBFBBFLLR +BBFBFBFLRR +BFBBFBBLLR +FBBBFBBRLR +BFFFBBBLLL +BFBBBFBLRL +BBBFFBFRRL +FFFFFFBLLR +BFFFBBBLLR +BFBBBBFLLL +BBFBFBBLRR +FBBFBBBLLL +BBFFBFFRLR +FFFBBBBLRR +BBBFFFFRRR +BFBBBBFRRL +BBBFBFFLRR +BFBBBBFLLR +BFFBBBFLRL +BBFBBBFRLL +FFFFFBFRRR +BBBFBFFLLL +BFFFBBFLLL +BFFBFFFLLL +FFBFFBFLLL +BBFBFBFRLR +FFBBFBFRRL +BBFBFFBLRL +FBBFFBBRRL +BFFBFBFLLR +BFBFBFFLLR +BBBFFBBLRR +FBBBBBBLRL +FFBBBFBLRL +FFBFFBBRLR +BBBFFBBRRL +BFBBFBBLLL +FBFFBFBRLL +BFBBFBFLLL +BFFFBFFLLL +FBFFFBBRLR +BBBFFFBLRR +BBFFBBFRRR +BFFBBFFLRR +BFBFFFFRRL +FFFFFBFRLL +FBFBBBBRLL +FBFBFBBLLL +FFFFBFFRRR +FFBFFFFRRR +FBFFFBBLRR +FFFFBFBRLR +BFBFBBBLRL +FBBFFFFLLR +BFFBFBBLRL +FBBFBFBRRL +BBFFBFFRLL +BBFFFBFLRL +FFFBBBFRRR +BBBFFBBRRR +BFFBBBBRLL +BBFFFBBRRL +BFBFFBBLLR +FFBBBFFLLL +BFBBBBFRLL +FFBBFFFRRL +FBBBFFBLRL +BFFBFBFRLR +BBFBFFBRRL +FBBBBBBRLL +FBBBBBFRRR +BFFBBFFRLL +BBFFFFFLLL +BBBFFBBRLL +FFFBFFBLLL +FFFBFFBRRR +FFBFBBBRLR +FFFFFFBRLR +FBFFFBBRRL +BFFFFBFLLR +BFBFBBFRRR +FBBBFBBRRR +BFBFFFFLLL +BBFBBFBLRR +BFBFBBFLRR +FFFFFBBLRL +FBBFFFBRRR +FFBBFBBRRL +BFFBBBBLRR +BBFBBBFLRL +FBFFBBFLRL +BBBFFFBRRR +BBFBFBFRLL +BFBFFBFRLR +BFBFFFFLRL +BBFBBBFLLR +BFFBBBFRLR +BFBBBBBRRL +BFBFFBFRLL +BBFFFBBLLL +FBBBBFBRRL +FFBFFFFLRL +FFBBBFFLRL +FBBBFFFRLR diff --git a/src/day5.rs b/src/day5.rs new file mode 100644 index 0000000..f28e5d4 --- /dev/null +++ b/src/day5.rs @@ -0,0 +1,56 @@ +use aoc_runner_derive::aoc; + +use std::fmt; + +#[derive(Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd)] +pub struct SeatId(u16); +impl fmt::Display for SeatId { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + ::fmt(self, f) + } +} + +impl SeatId { + fn parse(input: &[u8]) -> Option { + if input.len() != 10 { + return None; + } + let mut seatid = 0u16; + + for b in &input[..7] { + let value = match b { + b'F' => 0, + b'B' => 1, + _ => return None, + }; + seatid = (seatid << 1) | value; + } + + for b in &input[7..10] { + let value = match b { + b'L' => 0, + b'R' => 1, + _ => return None, + }; + seatid = (seatid << 1) | value; + } + Some(SeatId(seatid)) + } + + fn row(&self) -> u8 { + (self.0 >> 4) as u8 + } + + fn column(&self) -> u8 { + (self.0 & 0b111) as u8 + } +} + +#[aoc(day5, part1)] +pub fn solve_d5_p1(input: &[u8]) -> SeatId { + input + .split(|&b| b == b'\n') + .map(|i| SeatId::parse(i).unwrap()) + .max() + .unwrap() +} diff --git a/src/lib.rs b/src/lib.rs index a2e29cd..38b470d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,5 +2,6 @@ pub mod day1; pub mod day2; pub mod day3; pub mod day4; +pub mod day5; aoc_runner_derive::aoc_lib! { year = 2020 }