Added Day 5 Part 2
This commit is contained in:
parent
2c6be28d86
commit
9aea6f16f5
59
src/main.rs
59
src/main.rs
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user