aoc-rs-2021/src/day_07/parsing.rs
Jan Christian Grünhage dbd5139991 implement day 7
2021-12-07 10:43:19 +01:00

36 lines
841 B
Rust

use super::CrabSub;
use crate::parsing::parse_number;
use yap::Tokens;
pub fn parse_crab_sub(tokens: &mut impl Tokens<Item = char>) -> Option<CrabSub> {
parse_number(tokens).map(|num| CrabSub { location: num })
}
pub fn parse_crab_sub_swarm(tokens: &mut impl Tokens<Item = char>) -> Vec<CrabSub> {
tokens
.sep_by(|t| parse_crab_sub(t), |t| t.token(','))
.collect()
}
#[cfg(test)]
mod test {
use super::super::CrabSub;
use yap::IntoTokens;
#[test]
fn parse_crab_sub() {
assert_eq!(
Some(CrabSub { location: 1 }),
super::parse_crab_sub(&mut "1".into_tokens())
);
}
#[test]
fn parse_crab_sub_swarm() {
assert_eq!(
10,
super::parse_crab_sub_swarm(&mut "16,1,2,0,4,2,7,1,2,14".into_tokens()).len()
);
}
}