mirror of
https://github.com/Noratrieb/advent-of-code.git
synced 2026-01-14 17:45:02 +01:00
cleanup
This commit is contained in:
parent
a039fddf85
commit
d95881c5cf
5 changed files with 13 additions and 8 deletions
|
|
@ -7,3 +7,4 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
nom.workspace = true
|
nom.workspace = true
|
||||||
|
helper.workspace = true
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
use nom::{
|
use nom::{
|
||||||
branch::alt,
|
branch::alt,
|
||||||
bytes::complete::tag,
|
bytes::complete::tag,
|
||||||
character::complete::digit1,
|
|
||||||
combinator::{all_consuming, map},
|
combinator::{all_consuming, map},
|
||||||
multi::separated_list0,
|
multi::separated_list0,
|
||||||
sequence::{preceded, tuple},
|
sequence::{preceded, tuple},
|
||||||
|
|
@ -40,16 +39,11 @@ fn parse_line(line: &str) -> (u64, Vec<Vec<(u64, Color)>>) {
|
||||||
map(tag("green"), |_| Color::Green),
|
map(tag("green"), |_| Color::Green),
|
||||||
))(i)
|
))(i)
|
||||||
};
|
};
|
||||||
let parse_cubes = map(
|
let parse_cubes = tuple((helper::integer, preceded(tag(" "), parse_color)));
|
||||||
tuple((digit1, preceded(tag(" "), parse_color))),
|
|
||||||
|(a, c)| (a.parse::<u64>().unwrap(), c),
|
|
||||||
);
|
|
||||||
let parse_round = separated_list0(tag(", "), parse_cubes);
|
let parse_round = separated_list0(tag(", "), parse_cubes);
|
||||||
let parse_game = separated_list0(tag("; "), parse_round);
|
let parse_game = separated_list0(tag("; "), parse_round);
|
||||||
let parse_line = tuple((
|
let parse_line = tuple((
|
||||||
map(preceded(tag("Game "), digit1), |d: &str| {
|
preceded(tag("Game "), helper::integer),
|
||||||
d.parse::<u64>().unwrap()
|
|
||||||
}),
|
|
||||||
preceded(tag(": "), parse_game),
|
preceded(tag(": "), parse_game),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
||||||
4
Cargo.lock
generated
4
Cargo.lock
generated
|
|
@ -13,12 +13,16 @@ dependencies = [
|
||||||
name = "day2"
|
name = "day2"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"helper",
|
||||||
"nom",
|
"nom",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "helper"
|
name = "helper"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
|
|
|
||||||
|
|
@ -6,3 +6,4 @@ edition = "2021"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
nom.workspace = true
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
use nom::{character::complete::digit1, combinator::map, IResult};
|
||||||
|
|
||||||
|
pub fn integer(input: &str) -> IResult<&str, u64> {
|
||||||
|
map(digit1, |d: &str| d.parse::<u64>().unwrap())(input)
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue