Add solution for "Day 3: Lobby", part 1
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
use crate::solvers::Solver;
|
||||
use std::io::BufRead;
|
||||
|
||||
pub struct Lobby {}
|
||||
|
||||
impl Lobby {
|
||||
fn largest_joltage(bank: &str) -> u64 {
|
||||
let mut best = (0, 0);
|
||||
for d in bank.bytes().take(bank.len() - 1) {
|
||||
if best.0 < d {
|
||||
best = (d, 0)
|
||||
} else if best.1 < d {
|
||||
best.1 = d;
|
||||
}
|
||||
}
|
||||
let last = bank.bytes().last().unwrap();
|
||||
if best.1 < last {
|
||||
best.1 = last;
|
||||
}
|
||||
u64::from((best.0 - '0' as u8) * 10 + (best.1 - '0' as u8))
|
||||
}
|
||||
}
|
||||
|
||||
impl Solver for Lobby {
|
||||
const PUZZLE_INDEX: u8 = 3;
|
||||
const PUZZLE_NAME: &'static str = "Lobby";
|
||||
|
||||
fn process_data<R: BufRead>(&self, reader: R) -> (u64, u64) {
|
||||
let mut joltage = 0;
|
||||
for line in reader.lines().map_while(Result::ok) {
|
||||
joltage += Self::largest_joltage(&line);
|
||||
}
|
||||
(joltage, 0)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user