Day 5, day 4 cleanup

main
henine 4 years ago
parent 3636cdcf67
commit dfef1ef1c7

@ -53,13 +53,13 @@ fn main() {
fn verify(passport: &HashMap<String, String>) -> u32 { fn verify(passport: &HashMap<String, String>) -> u32 {
lazy_static! { lazy_static! {
static ref color_match: Regex = Regex::new("#[0-9a-f]{6}").unwrap(); static ref COLOR_MATCH: Regex = Regex::new("#[0-9a-f]{6}").unwrap();
} }
lazy_static! { lazy_static! {
static ref pid_match: Regex = Regex::new("[0-9]{9}").unwrap(); static ref PID_MATCH: Regex = Regex::new("[0-9]{9}").unwrap();
} }
lazy_static! { lazy_static! {
static ref eye_colors: HashSet<String> = { static ref EYE_COLORS: HashSet<String> = {
let mut s = HashSet::new(); let mut s = HashSet::new();
s.insert("amb".to_string()); s.insert("amb".to_string());
s.insert("blu".to_string()); s.insert("blu".to_string());
@ -80,14 +80,14 @@ fn verify(passport: &HashMap<String, String>) -> u32 {
(2020..2031).contains(&(passport.get("eyr").unwrap().parse::<u32>().unwrap())) && (2020..2031).contains(&(passport.get("eyr").unwrap().parse::<u32>().unwrap())) &&
passport.contains_key("hgt") && passport.contains_key("hgt") &&
(passport.get("hgt").unwrap().ends_with("cm") && (passport.get("hgt").unwrap().ends_with("cm") &&
(150..194).contains(&passport.get("hgt").unwrap().trim_right_matches("cm").parse::<u32>().unwrap()) (150..194).contains(&passport.get("hgt").unwrap().trim_end_matches("cm").parse::<u32>().unwrap())
|| ||
passport.get("hgt").unwrap().ends_with("in") && passport.get("hgt").unwrap().ends_with("in") &&
(59..76).contains(&passport.get("hgt").unwrap().trim_right_matches("in").parse::<u32>().unwrap()) (59..76).contains(&passport.get("hgt").unwrap().trim_end_matches("in").parse::<u32>().unwrap())
) && ) &&
passport.contains_key("ecl") && eye_colors.contains(passport.get("ecl").unwrap()) && passport.contains_key("ecl") && EYE_COLORS.contains(passport.get("ecl").unwrap()) &&
passport.contains_key("hcl") && color_match.is_match(passport.get("hcl").unwrap()) && passport.contains_key("hcl") && COLOR_MATCH.is_match(passport.get("hcl").unwrap()) &&
passport.contains_key("pid") && pid_match.is_match(passport.get("pid").unwrap()) { passport.contains_key("pid") && PID_MATCH.is_match(passport.get("pid").unwrap()) {
1 1
} else { } else {
0 0

@ -0,0 +1,9 @@
[package]
name = "day5"
version = "0.1.0"
authors = ["henine <matija@rezar.biz>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

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

@ -0,0 +1,77 @@
use std::fs::File;
use std::io::{BufReader, BufRead};
use std::result::Result::{Err, Ok};
use std::cmp::{max, min};
use std::collections::HashSet;
fn main() {
let file = match File::open("input") {
Ok(file) => file,
Err(e) => panic!(e)
};
let input_buffer = BufReader::new(&file);
let mut row = 0;
let mut row_i = 6;
let mut column = 0;
let mut col_i = 2;
let mut max_id = 0;
let mut filled_seats = HashSet::new();
let mut minrow = 200;
let mut maxrow = -1;
for rline in input_buffer.lines() {
let line = match rline {
Ok(line) => line,
Err(e) => panic!(e)
};
for char in line.chars() {
match char {
'F' => {
row_i -= 1;
}
'B' => {
row += 1 << row_i;
row_i -= 1;
}
'R' => {
column += 1 << col_i;
col_i -= 1;
}
'L' => {
col_i -= 1;
}
_ => panic!()
}
}
let id = 8 * &row + &column;
max_id = max(id, max_id);
minrow = min(row, minrow);
maxrow = max(row, maxrow);
println!("{}: row {} column {} id {}", line, row, column, id);
filled_seats.insert((row, column));
row = 0;
row_i = 6;
column = 0;
col_i = 2;
}
for r in minrow..maxrow {
for c in 0..8 {
if !filled_seats.contains(&(r, c)) {
println!("My id: {}", 8 * r + c);
}
}
}
println!("Max id: {}", max_id);
}

@ -0,0 +1,4 @@
FBFBBFFRLR
BFFFBBFRRR
FFFBBBFRRR
BBFFBBFRLL
Loading…
Cancel
Save