Implement day 18 2021

This commit is contained in:
2021-12-18 14:46:27 +01:00
parent dfd8b2b985
commit 7d331f9131
5 changed files with 366 additions and 5 deletions

View File

@@ -4,6 +4,9 @@ use std::io::Read;
use std::marker::PhantomData;
use std::str::FromStr;
use nom::Finish;
use nom::IResult;
pub struct LineIter<'a> {
reader: BufReader<&'a mut dyn Read>,
buffer: String,
@@ -78,3 +81,15 @@ pub fn ordered<O: PartialOrd>(a: O, b: O) -> (O, O) {
(b, a)
}
}
pub fn read_input<P, O>(input: &mut dyn Read, parser: P) -> O
where
P: for<'a> FnOnce(&'a [u8]) -> IResult<&'a [u8], O>,
{
let mut buffer = Vec::new();
input.read_to_end(&mut buffer).unwrap();
let (_, output) = parser(&buffer).finish().unwrap();
output
}