mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-26 21:30:31 +01:00
Use reusable parser wrapper more
This commit is contained in:
@@ -7,9 +7,10 @@ use nom::bytes::complete::tag;
|
||||
use nom::combinator::map;
|
||||
use nom::sequence::preceded;
|
||||
use nom::sequence::separated_pair;
|
||||
use nom::Finish;
|
||||
use nom::IResult;
|
||||
|
||||
use crate::common::read_input;
|
||||
|
||||
#[inline]
|
||||
fn solve_quadratic(a: f64, b: f64, c: f64) -> Option<f64> {
|
||||
let d = b * b - 4. * a * c;
|
||||
@@ -108,10 +109,7 @@ fn parse_input(input: &[u8]) -> IResult<&[u8], (RangeInclusive<i32>, RangeInclus
|
||||
}
|
||||
|
||||
pub fn part1(input: &mut dyn Read) -> String {
|
||||
let mut buffer = Vec::new();
|
||||
input.read_to_end(&mut buffer).unwrap();
|
||||
|
||||
let (x_range, y_range) = parse_input(&buffer).finish().unwrap().1;
|
||||
let (x_range, y_range) = read_input(input, parse_input);
|
||||
|
||||
let check_value = |y_speed| {
|
||||
let mut time = find_hit(y_speed, &y_range)?;
|
||||
@@ -127,10 +125,7 @@ pub fn part1(input: &mut dyn Read) -> String {
|
||||
}
|
||||
|
||||
pub fn part2(input: &mut dyn Read) -> String {
|
||||
let mut buffer = Vec::new();
|
||||
input.read_to_end(&mut buffer).unwrap();
|
||||
|
||||
let (x_range, y_range) = parse_input(&buffer).finish().unwrap().1;
|
||||
let (x_range, y_range) = read_input(input, parse_input);
|
||||
|
||||
let num_options = |y_speed| {
|
||||
let time = find_hit(y_speed, &y_range)?;
|
||||
|
||||
Reference in New Issue
Block a user