diff --git a/2020/README.md b/2020/README.md index 0f8e64e..219d44a 100644 --- a/2020/README.md +++ b/2020/README.md @@ -7,8 +7,8 @@ | 01 | ✓ | ✓ | Rust | | 02 | ✓ | ✓ | Rust | | 03 | ✓ | ✓ | Rust | -| 04 | | | | -| 05 | | | | +| 04 | ✓ | ✓ | Rust | +| 05 | ✓ | ✓ | Rust | | 06 | | | | | 07 | | | | | 08 | | | | diff --git a/2020/day-05/Justfile b/2020/day-05/Justfile new file mode 100644 index 0000000..5ec35db --- /dev/null +++ b/2020/day-05/Justfile @@ -0,0 +1,6 @@ +@part PART INPUT_FILE="inputs/puzzle.txt": + rustc part_{{PART}}.rs + ./part_{{PART}} {{INPUT_FILE}} + +clean: + rm -f part_one part_two diff --git a/2020/day-05/common.rs b/2020/day-05/common.rs new file mode 100644 index 0000000..92097d5 --- /dev/null +++ b/2020/day-05/common.rs @@ -0,0 +1,34 @@ +use std::fs::read_to_string; +use std::io; +use std::path::Path; + +pub type BoardingPass = Vec; +pub type SeatId = u32; + +pub fn parse_file>(path: P) -> io::Result> { + let content = read_to_string(path)?; + + Ok(content.lines().map(|line| line.chars().collect()).collect()) +} + +pub fn calculate_seat_ids(boarding_passes: &[BoardingPass]) -> Vec { + boarding_passes + .iter() + .map(|boarding_pass| { + let mut row = 0..128; + let mut col = 0..8; + + for instruction in boarding_pass { + match instruction { + 'F' => row.end = row.start + row.len() / 2, + 'B' => row.start += row.len() / 2, + 'L' => col.end = col.start + col.len() / 2, + 'R' => col.start += col.len() / 2, + ins => panic!("invalid instruction {}", ins), + } + } + + (row.start * 8 + col.start) as u32 + }) + .collect() +} diff --git a/2020/day-05/inputs/puzzle.txt b/2020/day-05/inputs/puzzle.txt new file mode 100644 index 0000000..c30dbd1 --- /dev/null +++ b/2020/day-05/inputs/puzzle.txt @@ -0,0 +1,809 @@ +BFBFBBBRLL +BFFBBBBRRR +FFBBFBFLLL +FFBBBBBRLR +BFFBFBFRRL +BFFBFFBRLL +FBBFBFBRLL +FFBFFBBLLR +BFBBBFFRRR +FBFFFFBLLL +FFFFFFBRRR +FBBFBFFRRR +FFBBBBFRLL +BFFBBFBLRR +BFFFFBFRRL +FFFFFBFRLL +FBFFBFFRRR +BFBFBBBLLR +FBFFBBBLRR +FBBBBBFRLR +FFBFFBBRLR +FBBFFFFRRL +FFFFFBBRRL +FFBBFBFRLL +BFFBBBBLLL +FFFFBFFRRL +FBBFFFFLLR +FFBBBBBLLR +FBFBBFBRRR +FBFFBBFRRL +BFBFBFBRLL +BFFBBBBLLR +FBBBBFFLLR +FFBFBBFRLL +BBFFFFBRRL +FBFFFBBLLL +FFFFBBBLLR +FFBBFFFRLL +BFBFFBBRLL +FFBBBFBLLR +FFBBFFFRRR +BFFFBBBRLL +FBFBBFFRLR +FBBFBBBRRR +FBBBBBBRRR +BFFBFFFRRR +BFFBBBFLLL +BFBFFFBLLL +BFFBFBFLLR +FBFFFFBLRL +BFFBBFFLRR +BFBFBFFLLL +BBFFFBFLRL +BFFFBBBLLL +FFBBBBBLLL +BFFFFFFRLL +FFBBBBBLRL +FBFBBBBLLR +FFBBFBBLRL +FBBFBFBLRL +FBBFBBBLRR +BFFBFBBRRR +BFFBBFFLRL +FBFBBFFLLR +BFBBBFFLRR +FBBBFFBLRL +FBFBBBBRLL +FFFFBFFLLL +BBFFFBFRRR +BFBFBBFLRR +FBBFBFFLLL +FBBBBFBRRR +FFFFBBFRRR +FBBFFBFLLL +FBBBFFBRRR +BFFBBBBLRL +FFFFBFBRLL +FBBFFFBRRR +FBFBBFFRLL +BFFFFBFRRR +FFBBBFFLRR +FBBFBBFLLR +BBFFFFBRRR +BFFBFBFLLL +FFFBBBFLLR +FFBFFBFLRL +FFBFBBBLRL +FBFFFBBRRL +BFFBFBBLLR +BFBBFBBRLR +BFBBFFFRRL +FBFBFFFLLR +FFBBBFFLLR +BFBBBFFLLR +BFBFBFBLLR +BBFFFBFLLL +FFBBFBFRRR +BFFFBBFRRR +FBFFBBFRLR +BFBBBBFRLL +BBFFFFBLLR +FFFBFBBLLR +FBFFBFBRRR +FFBFBFBRRR +FFFFFBBRLL +BFFFFBFLLR +FBBFBBFLRR +FBFFFFFRRL +FBBFBFBLLR +BFFFFBBLLL +FBBBBBFLLL +FBBFFBFRRR +BBFFBFBLRL +BFFFBFFRRL +BFFFFFBLLR +FFFBBFBRLR +FBFFBFFRLR +BFBFBFFLLR +BFFFBBFLRL +FFFFBFFLLR +BFFBFFFRLR +FBFBFBFLRR +FBBBBBBRLR +BFBFBFFLRL +BFFFBFBLLR +BBFFBFFLLR +BFFBBBBLRR +FFFBBFFRRR +FBBFBBBLRL +FFBBBFBRLR +FBBBFBFRLR +FBBBBFFLRL +FFBFBFFRLR +BBFFFFFLRL +FFFBBBBLRL +FBFBBBFLRL +BFFBFFFRRL +FFBFFBFRLR +FBFBFFFLRR +FBFBFFBRRL +FBFBBBBLRL +BFBBBBBLLL +BBFFFFBLRR +BFFFBFFLRR +FBBBBBFRRR +FBFFBBBLRL +BBFFFBBRLL +BFBFBFBRRR +BFFBFBBLRR +FFBBFBBRLL +FFFFFBBRLR +BFFFBFBRRL +FFFBFBBLLL +FFFFBFBRRR +FBBFFBBLRR +BFFFFBBLRR +FFBFFFBLRL +FFBFBFBLRR +FBBBBFFRRR +FBFFBFBLRL +BFBFFBBLLL +FBBFFFFLLL +FBBFFBBLLR +FFBFBFFRLL +FBFBBBFRRR +BFFFBFFRLL +FFBFBFBRLL +FFBBFBFLRL +FFBBFBBLLR +FBFBBFBLRL +BBFFFFFRRR +FBBFFBBLRL +BFBFFBBLLR +FFFFFBBLLL +FFBBBBFRRL +FFBBFFFLLL +FFFBFFBRLL +FFBFBBFLLR +BFFFBBBRLR +FBFFBBFRRR +FBBFFFFRLL +FFFBBBFRLR +FFBBFFBRRR +BFBFFFFLRR +BBFFBBFLLR +BFFBFFBLRL +BBFFBFFLRR +FFFBFFBRRR +BFFFBBBLRR +BFBFFBFRLR +FFFBFFFRRR +FFBFBBBRLR +BFBFBBFRLR +BBFFBFFRRL +BFBFBFFRLR +FBBFFFFRLR +FBFBFBBRLL +FFBBBFBRLL +FFBFFFFRRR +BFFBFBBLRL +FFFBFBFRLR +FBBFFFBLRL +FFBFFFFLRL +BBFFBBFRLL +FFFFFFBRRL +BFFBFFBLRR +BFFFFFFRRL +BFFBBFBLRL +FBBFFFFLRL +FFFBBFFRLR +BFBBFFFRLR +FFBBFBBLRR +FFBFBBBLLR +FFBBBBFLRR +FFBFBFFLLL +FFFBFFFLLL +FFBFBFFLRL +BFBFFFBLRL +FBFFFFFLRR +BFBBBBFRRR +FBBFBBFLLL +FFFBBFFLLR +FFBFBBBLLL +BBFFBFFLLL +FBFFBFBRLR +BFBBBBFLRR +FBBBFBFRRL +BFFBBBBRRL +BFBBFFFLLL +BFBBFBFRRR +BFFBFBBLLL +FBBBBBFRRL +FFFBFBFRRL +FFBBBBFLLL +FBBFBBBLLL +FBFFBFFLLR +BFBBBBBLRR +FBFFFFFLLL +BFFFBBBRRL +FBFFFBBRLL +BFBBFBBLRR +FBBBFBBRLR +BBFFBFBLLR +BBFFFFBRLL +BFBBFBFLLR +FBBFFBFLRL +BBFFFBFRRL +BFFFBBBLRL +FBBBBFBRRL +BFBFBFBRRL +FFBFFBBRRR +FBBFFBBLLL +BFFBFFFRLL +FFFFBFFRLR +FFBFFBBRLL +FBBBFFFLRL +FFBFBFBRRL +BFBBBFFLLL +FBBBBFBLLL +FFFBBBBLRR +FBFFFFBRLR +FFBBBBFLRL +BFBBBBFRRL +FFFFBBFLLL +BFFFBBBLLR +FFFBBBBRRL +FBBBFBFLLL +BFFFFFBLRL +FFFBFBBRRL +BFFBBFBRLL +FBFBBFBLRR +FBBBFFFLLL +BFBFFFFRRL +FBBBBFFRLL +BFBFFBBLRL +FBBBBFBRLL +FBBFFBBRLR +FFBBBFBRRL +FFFBBFFLRL +BFBBFBFRLL +FBBFBBFRLL +FBFBBBFLLR +FBFFBFBRLL +BFFFBFFRRR +BFBFBBFLRL +FBBBBBFLRR +FFFFBBFRRL +BFBBFFBRRR +FBBFFFBLRR +BFBBBFBLLR +FBBBBFBRLR +BFBFFFFRLL +FFFBBBFLLL +BFFFBFFLLL +FBFBFFBRLL +BBFFFFFLLL +FFFFFBBLRR +BFFFFFFLRR +BFFBFBFLRR +FFFBFFBLLR +BFFFFFFLLR +FBFFBBBRRR +FFFFBFBLLR +BFFBBFFLLL +FFFFFBBLLR +BFBBBFBRRL +FBFFBBBRLR +BBFFFFBLRL +FFBFFBFLLL +FBFFFFBLRR +FFFBFBFLLR +FFBFFFFLLR +FFFFFBFLRL +BBFFFBBLLL +BFFBFBFRRR +FBBBFFFLLR +BFBBBFBLLL +FBFFFFFRRR +FBFFBBFLRL +BFFBBFBLLR +FBBFFBFRLR +FFFFFBFRRL +FFBFFBBLLL +BFBFFBFRLL +BFBBFFFRLL +FBBBFBFRLL +FBFBFFFLLL +BBFFFBBLRR +FFFBFBFLLL +BBFFBFBLRR +FFBBFBFLRR +BFFBBFFRLR +FBFBFBBRLR +FBBFFBBRRR +FFBFFFBRRR +BFBBFBBLRL +FFFBFFFRLL +BFBBFBFLRL +BFBFBBBLLL +FBFBBFFLRL +FFBFBBBRRL +FFFBFFBRRL +FFBFFFFRLR +FFFFBBBRRR +FFFFBFBLLL +FFBFFBFRRR +FFBFFBFLRR +FFFBBFFRLL +FBBBFFFRLR +FFBFFFBRLL +FBBBFBFRRR +FBFFFBFLRR +FBBBFBFLRL +FBFBFFFRRL +BFBFFFFLRL +FFBBFFBLRL +BBFFBFBLLL +FBFBBBBRRR +FBBFFFBLLR +FBBFBFFRRL +FFBFBFBLLR +BFFBBBFLRR +FBFBFFBLRL +FBFFBBBLLL +FFBFBBFRRL +BFFBFFFLLR +FBBBFBBLRL +BFFBBFBRLR +BFFFBFBRLL +BFFFFBBRRR +FBFFBBFLLR +FFBFFFBRRL +FFBBBBBRRL +BFFBBBBRLR +BFFFBFBRLR +FBBBBBBLLL +BFFFBFBRRR +FFBBBFFRLR +FBBBFBFLLR +FBFBFBFRRR +FBFBBBBLLL +BFBFBFBRLR +FFFFBFFLRR +BFFBFBBRLL +BFBFFFBLLR +BFBBFBBLLL +FBFFBBBLLR +FBBFBBFRRR +FFFBFFFLLR +FFFBFBBRLL +BFBFFBFLLR +BFFFFBBLRL +FBFBBFBLLL +FBBFFBFRLL +BFBBBBFRLR +BFBFFFBRLL +BBFFFBFRLR +FFFFBBBLRL +BFBBFFBLRL +BBFFBBFRRL +FFBBBFBLLL +FBFBFBFLRL +FBBBBBBRRL +FFFFFBBRRR +FFFFFBFRRR +FBFFFBBRRR +BFFBBFBRRL +BBFFFFFRLL +FFFBFFBRLR +FFBBFFFRRL +FBFBFFFRLR +BFFBBBFRLR +BFBBBBFLRL +FBFFBFBRRL +FFBFBBBRRR +FFFFBBFRLL +FFFFBBBRLL +FBBFFFBLLL +BFBBFBBRRR +BFFBBBFRLL +BFFFBFFRLR +FBFBFFBLLL +BFFFFBBRLL +BBFFBFFLRL +BFBBBBBLRL +BFFFFBBRRL +BFFBFFFLRL +BBFFBBFRLR +BFBBFBFLLL +BBFFBFFRLR +FBBFBBBRLL +FFFBFBFLRR +BFBFFBFLLL +FFFFBBFLRR +FFFBBBBLLL +BFBFFFFRRR +FBFBBBFRLL +FFBBFFFLRR +FBFBBBFRLR +BFFFBBFLLR +BFBBBBBLLR +BFFBFFBRRR +FBBBFFBRLR +BFBFBBFLLL +FBFFFFFRLR +BFFFFFFLLL +BFFBFFBRLR +BBFFFFBRLR +BBFFBFBRLR +FBFBFBBLRR +BFFFBBFLRR +FBFFBBBRLL +FFFFBBFLRL +FFBFFBBLRL +FBFFBBFLLL +FBFBBFFLLL +FFBBFFBRLR +BFFFBBBRRR +BBFFFBBLLR +BFFBBBFLRL +BBFFFBBRLR +FBBBBBBLLR +FBFBBFFRRR +FBFFBBFRLL +FFFBBFBRLL +FFFBFBBRLR +FBFFBFFLLL +FFBBBBBLRR +FBFFFFFLLR +FBFFFBBLRL +FBFFBFBLRR +FFBBBBFRRR +FBBBFFFRRL +FFFFBBFLLR +FFFFFBFLRR +BBFFBBFLLL +FBFBFBBLLL +FBFBFFBRRR +FBFFBFFLRR +FBBFFFFLRR +FBBFBFFLLR +BFFBBBFRRR +FFBBBBBRRR +BFFFFFBRLR +BFFBFBFRLR +FFFFBFFRLL +BFBFFBBRLR +BFBBFFFLRL +FBFFFFBLLR +FFBFFBFRLL +BBFFFBBLRL +FBBFFBFLRR +BFFFFBBRLR +BFBBFBBRRL +FBBFBFBRRR +BFFFBFFLRL +FFBBFBBRRL +FFFBFFBLRR +FBBFBFBRRL +BFBFBBFLLR +BBFFFBBRRL +FFBFBBFLRL +FFBFFFBLRR +FBFFBFBLLR +BFBFFBBRRL +BFFBFFFLRR +BFBBBFBRRR +FFBFBBBLRR +BFFFFFBRRL +BFBFBFFRRL +FFBFFBBRRL +FBBBBFBLRL +BFBFFFFRLR +FBBBFFFRRR +BBFFBBFLRR +FFBFBFBRLR +FBBBFBBLRR +FFBFBBBRLL +BFFBBFFRRL +BBFFBFBRLL +FBBBFBBRRR +FBFFFFFLRL +FFBBFFBLLR +FBBFBBBRRL +FFFFBBBRLR +FBBFBBBRLR +FBBBBFBLLR +FFBFBFBLLL +BFFFBBFRRL +FBFFFBFRRL +BFBFBBBRRR +FBFBFBBLRL +BFBFBFFRRR +FFBBBBBRLL +FFFBBBFRRL +FFBBFFBLRR +BFBBBFBLRR +FBBBBBBLRR +FBFFFBBLLR +FBBFBFFLRL +FFBBBFFLRL +FFBFFBFLLR +FFFBBFFRRL +FFFFBFBRRL +FBFBBFBRRL +BFBBFFBLLL +BFFBFBBRRL +FFFFBBBRRL +BBFFFFFRRL +BFFBFFBRRL +FFFBBBFRLL +FFBFBBFRLR +BBFFFBFRLL +BFBBFBBRLL +FFFBFBBRRR +FBBFFFBRRL +FBFBFBFRLL +FBBFFFFRRR +BFBFFBFRRL +FBBBFBFLRR +FFBFBFBLRL +FFBBBBFLLR +FFFFFBFLLR +FFBFFFBLLL +BBFFBFFRLL +FFFBBBBRRR +FFBFFBBLRR +BFFFFFFLRL +FFFBBBFLRL +FBFFFBFLLR +BBFFFBFLRR +BFBFFFBRLR +BFFFBBFRLR +BFBFBBFRRL +BFBFFBBRRR +FFBFBBFLLL +FFFBBFBLLL +FFBBFFBRRL +FBFBBBFLLL +BFFFFFFRLR +BBFFFBFLLR +FBBFBFFRLL +FBFBFFBLRR +FBBFBFBRLR +FBFFBBBRRL +BFFBBFFRLL +BFFBFFBLLL +BFBBFBFRRL +FFFBFBFLRL +FFBBFBBRLR +FBBBBBFLRL +BBFFBFBRRL +FFFFBFBLRR +FFBFBFFRRL +FBFBBBBLRR +FFFFBFFRRR +BBFFBBFLRL +BFBBBBFLLL +FBBFBFBLRR +FBBBBBBRLL +FFFBBBBRLR +BBFFFFFRLR +FBFFFFFRLL +BFBBFFBLLR +BFFFFBFRLR +FFBBBFFRRL +FFBBBFFRLL +BFFBBFBLLL +FFFBBBFRRR +BFFFFFBRRR +FBFFFBFRLL +FBBFBFFLRR +BFFFFFBLRR +BFBFBFBLRL +BFBBBFFLRL +FFBFFFFRLL +FBFBFBFRLR +BFFFBBFRLL +FFBBFBFRLR +FBFBBFBLLR +FBFFBFFRRL +FBBBBFFLRR +BFBFBBBRLR +BFBBBFFRRL +FFFBFBBLRL +FBBBFFBLRR +BFBFFBFLRL +BFFFFFBRLL +BFFFBFFLLR +BFBBBFBRLR +FFFBFFFLRR +FBFBFBFRRL +FBFBFFFLRL +FBBFBBBLLR +BFBFFFFLLR +FBFFFBFLLL +FBBFBBFRLR +FBBFFFBRLL +FFFBFFBLRL +FBFBBFBRLR +BFBBFFFRRR +BFBFBFFRLL +FBFBFBBRRL +FFFBFBFRLL +FBBFFBBRLL +BFFBFBFLRL +BFFFFBBLLR +BFFFFFFRRR +BFBBBFBLRL +FFFBBFFLLL +FBBBFBBRLL +FFFBFFBLLL +FBFFFBFRRR +BFBFFBFLRR +FFBFFFFLRR +BFBBBFFRLR +FBFBFFBLLR +FFBFBBFRRR +FFBBFFBLLL +FFBFFFFLLL +BFFBBFBRRR +FFFBBBFLRR +FFBBFFBRLL +FFBBFBBLLL +BFFFFBFLLL +FFFBBFBRRR +FFBFFFFRRL +FFFBBFBRRL +BFFBBBFRRL +FBBBFFBRLL +FBFBFBBLLR +FBBBFBBRRL +BFBFBBBRRL +BFBFBFFLRR +BFFFFFBLLL +BFBFBBFRLL +FBBBBBFRLL +BFFFBFBLRL +FBFBBBBRLR +FBFFFBFLRL +FFBFBFFRRR +BFBFBFBLLL +BFBBFFBRLL +FBBBBBBLRL +BFFFBBFLLL +FBBFBBFLRL +FFFFBBFRLR +BFBFFFBRRR +FFBFBFFLRR +FFFFFBFLLL +FBFBFFFRRR +FBFFFBFRLR +FBFBBFBRLL +BFBFFBFRRR +BFBBFFBRLR +FBBBBFFRRL +BFBFFFFLLL +BFBFFFBLRR +FBFBBBBRRL +BFFFBFBLRR +FFBBFBFLLR +FBBBFFBRRL +FFFFFBFRLR +FFFBBFBLLR +FBFFBFFLRL +FFFBFBFRRR +BBFFBFBRRR +BFBBBBFLLR +BFBBBBBRLR +FFBBFFFLRL +FBBBFFBLLR +BFBFBFBLRR +FFBFBFFLLR +FBFFBFFRLL +FFBFFFBLLR +BFBBFBFRLR +FBBBFBBLLL +BFBBBBBRLL +FBFBFFBRLR +FFBBBFBLRR +FBBFFBFLLR +FFFBBFBLRL +FBFBBBFLRR +FBBBFFFLRR +FBFFFFBRRR +FFFFFBBLRL +FFBBBBFRLR +BFFBFBFRLL +BFFFFBFRLL +BFFFBFBLLL +BFBBBFBRLL +FFFBFFFRLR +FBBBFFBLLL +FBFBBFFLRR +FFFBFBBLRR +BFBFFFBRRL +FFBBBFFRRR +FBFFFFBRLL +FFFBBFBLRR +FFFFFFBRLR +FFFBBBBLLR +FFFBFFFRRL +FBBFFBBRRL +FBBBBFBLRR +FBFFBFBLLL +FFBFFFBRLR +BFFBBBFLLR +FFFBBBBRLL +FFFFBBBLRR +FFFBBFFLRR +BBFFFFFLLR +FFFFBFBLRL +BFBFBBBLRR +FBBFFFBRLR +FBFFFBBRLR +FBFFBBFLRR +BFBBFBFLRR +FBFBFFFRLL +BBFFBFFRRR +BFFBBBBRLL +BFBBFFBRRL +BFFBBFFLLR +BFBFBBFRRR +FBFBFBFLLL +FBBBFFFRLL +FFBBFBBRRR +FFBBBFFLLL +BFFBFFFLLL +BFBFFBBLRR +FFFFBFBRLR +FBFBBBFRRL +FFFFBBBLLL +FBBBBBFLLR +BFBFBBBLRL +BBFFFFFLRR +BFFBFFBLLR +BFBBFFBLRR +FBBBFBBLLR +FFBFBBFLRR +FBFBFBFLLR +FBFBFBBRRR +BFFFFBFLRL +FFFBFFFLRL +BBFFFBBRRR +BFBBFFFLRR +FFFFBFFLRL +BFFBBFFRRR +BFFBFBBRLR +FFBBBFBRRR +FFBBFBFRRL +FBBFFBFRRL +FBBFBBFRRL +FBBFBFBLLL +BFBBBBBRRL +FFBBFFFLLR +FFBBBFBLRL +FFBBFFFRLR +BFBBFBBLLR +FFBFFBFRRL +FBBBBFFLLL +BFFFFBFLRR +BFBBBFFRLL +BFBBBBBRRR +BBFFFFBLLL +FBFFFBBLRR +FBBBBFFRLR +FBBFBFFRLR +FBFBBFFRRL +FBFFFFBRRL diff --git a/2020/day-05/inputs/sample.txt b/2020/day-05/inputs/sample.txt new file mode 100644 index 0000000..b036d3e --- /dev/null +++ b/2020/day-05/inputs/sample.txt @@ -0,0 +1,3 @@ +BFFFBBFRRR +FFFBBBFRRR +BBFFBBFRLL diff --git a/2020/day-05/part_one.rs b/2020/day-05/part_one.rs new file mode 100644 index 0000000..62bd706 --- /dev/null +++ b/2020/day-05/part_one.rs @@ -0,0 +1,20 @@ +mod common; + +use std::env; +use std::io; + +use common::{calculate_seat_ids, parse_file}; + +fn main() -> io::Result<()> { + let path = env::args().skip(1).next().unwrap(); + + let boarding_passes = parse_file(path)?; + + let seat_ids = calculate_seat_ids(&boarding_passes); + + let highest_seat_id = seat_ids.iter().max().unwrap(); + + println!("{}", highest_seat_id); + + Ok(()) +} diff --git a/2020/day-05/part_two.rs b/2020/day-05/part_two.rs new file mode 100644 index 0000000..8e1a173 --- /dev/null +++ b/2020/day-05/part_two.rs @@ -0,0 +1,24 @@ +mod common; + +use std::env; +use std::io; + +use common::{calculate_seat_ids, parse_file}; + +fn main() -> io::Result<()> { + let path = env::args().skip(1).next().unwrap(); + + let boarding_passes = parse_file(path)?; + + let mut seat_ids = calculate_seat_ids(&boarding_passes); + seat_ids.sort(); + + for s in seat_ids.windows(2) { + if s[1] - s[0] == 2 { + println!("{}", s[0] + 1); + break; + } + } + + Ok(()) +} diff --git a/README.md b/README.md index 38b14bc..c6fa9bb 100644 --- a/README.md +++ b/README.md @@ -7,5 +7,5 @@ - [2017](2017/README.md) (0% completed) - [2018](2018/README.md) (0% completed) - [2019](2019/README.md) (0% completed) -- [2020](2020/README.md) (16% completed) +- [2020](2020/README.md) (20% completed) - [2021](2021/README.md) (44% completed)