aoc-rs-2021/src/day_15/parsing.rs
Jan Christian Grünhage 726f629e30 implement day 15
2021-12-16 00:09:04 +01:00

18 lines
537 B
Rust

use yap::Tokens;
use crate::parsing::{newline, parse_digit};
pub fn parse_line(tokens: &mut impl Tokens<Item = char>) -> Option<Vec<usize>> {
tokens.optional(|t| {
let vec: Vec<usize> = t.many(|t| parse_digit(t)).collect();
(!vec.is_empty()).then(|| vec)
})
}
pub fn parse_grid(tokens: &mut impl Tokens<Item = char>) -> Option<Vec<Vec<usize>>> {
tokens.optional(|t| {
let vec: Vec<Vec<usize>> = t.sep_by(|t| parse_line(t), |t| newline(t)).collect();
(!vec.is_empty()).then(|| vec)
})
}