diff --git a/advent_of_code/2022/16/src/main.rs b/advent_of_code/2022/16/src/main.rs index c533940..f0638ae 100644 --- a/advent_of_code/2022/16/src/main.rs +++ b/advent_of_code/2022/16/src/main.rs @@ -1,11 +1,11 @@ use nom::{ - IResult, - multi::separated_list1, - sequence::{tuple, preceded}, - character::complete::{self, multispace1}, + branch::alt, bytes::complete::take, bytes::streaming::tag, - branch::alt, Parser, + character::complete::{self, multispace1}, + multi::separated_list1, + sequence::{preceded, tuple}, + IResult, Parser, }; #[derive(Debug, PartialEq, PartialOrd, Clone)] @@ -19,25 +19,21 @@ fn parse_input(input: &str) -> IResult<&str, Vec<(String, u32, Vec)>> { let (input, valve_tuples) = separated_list1( multispace1, tuple(( - preceded( - tag("Valve "), - take(2 as usize).map(|s| String::from(s))), - preceded( - tag(" has flow rate="), - complete::u32), + preceded(tag("Valve "), take(2 as usize).map(|s| String::from(s))), + preceded(tag(" has flow rate="), complete::u32), alt(( preceded( - tag("; tunnels lead to valves "), - separated_list1( - tag(", "), - take(2 as usize).map(|s| String::from(s)))), + tag("; tunnels lead to valves "), + separated_list1(tag(", "), take(2 as usize).map(|s| String::from(s))), + ), preceded( - tag("; tunnel leads to valve "), - take(2 as usize).map(|s| vec![String::from(s)])), + tag("; tunnel leads to valve "), + take(2 as usize).map(|s| vec![String::from(s)]), + ), )), - )) + )), )(input)?; - + Ok((input, valve_tuples)) } @@ -54,10 +50,12 @@ fn main() { // println!(); // } - let valves : Vec = valve_tuples + let valves: Vec = valve_tuples .into_iter() - .map(|(i, f, t)| Valve {id: i, flow: f, tunnels: t}) + .map(|(i, f, t)| Valve { + id: i, + flow: f, + tunnels: t, + }) .collect(); - - }