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