1
0

Added Day 5 Part 2

This commit is contained in:
Ishan Jain 2020-12-05 11:05:41 +05:30
parent 2c6be28d86
commit 9aea6f16f5
No known key found for this signature in database
GPG Key ID: F261A0E73038D89D

View File

@ -1,58 +1,55 @@
use std::collections::HashSet;
use std::io::{stdin, Read}; use std::io::{stdin, Read};
fn main() { fn main() {
let mut input = String::new(); let mut input = String::new();
stdin().read_to_string(&mut input).unwrap(); stdin().read_to_string(&mut input).unwrap();
let max_seat_id: usize = input let filled_seats = input
.split('\n') .split('\n')
.filter(|x| !x.is_empty()) .filter(|x| !x.is_empty())
.into_iter() .into_iter()
.map(|seat| { .map(|seat| {
let seat = seat.as_bytes(); let mut region_lower = 0;
let (region, columns) = seat.split_at(7); let mut region_upper = 127;
let mut col_lower = 0;
let mut col_upper = 7;
let mut lower = 0; for s in seat.as_bytes() {
let mut upper = 127; match s {
for r in region {
match r {
b'F' => { b'F' => {
let mid = (lower + upper) / 2; let mid = (region_lower + region_upper) / 2;
upper = mid; region_upper = mid;
} }
b'B' => { b'B' => {
let mid = (lower + upper + 1) / 2; let mid = (region_lower + region_upper + 1) / 2;
lower = mid; region_lower = mid;
} }
_ => unreachable!(),
}
}
let region = lower;
lower = 0;
upper = 7;
for col in columns {
match col {
b'L' => { b'L' => {
let mid = (lower + upper) / 2; let mid = (col_lower + col_upper) / 2;
upper = mid; col_upper = mid;
} }
b'R' => { b'R' => {
let mid = (lower + upper + 1) / 2; let mid = (col_lower + col_upper + 1) / 2;
lower = mid; col_lower = mid;
} }
_ => unreachable!(), _ => unreachable!(),
} }
} }
let region = region_lower;
let col = lower; let col = col_lower;
region * 8 + col region * 8 + col
}) })
.max() .collect::<HashSet<usize>>();
.unwrap();
println!("{:?}", max_seat_id); let min = *filled_seats.iter().min().unwrap();
let max = *filled_seats.iter().max().unwrap();
for i in min..max {
if !filled_seats.contains(&i) {
println!("seat = {}", i);
break;
}
}
} }