From 62fe2dd0fae96439d511406bf82df6a64bcf462a Mon Sep 17 00:00:00 2001 From: OMGeeky <39029799+OMGeeky@users.noreply.github.com> Date: Wed, 6 Dec 2023 19:16:45 +0000 Subject: [PATCH] extract parsing from day05 part1 --- src/day05.rs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/day05.rs b/src/day05.rs index 2319f25..7a81525 100644 --- a/src/day05.rs +++ b/src/day05.rs @@ -53,21 +53,7 @@ impl Day for Day05 { let mut data = data.lines().map(|x| x.trim()); let target_seeds = data.next().unwrap(); println!("targets: {}", target_seeds); - let mut dict = HashMap::new(); - - for (is_map, lines) in &data - // .inspect(|x| println!("{}", x)) - .group_by(|x| x.len() > 0) - { - if !is_map { - continue; - } - let lines = lines.collect::>(); - dbg!(&lines); - let map = Map::from_vec(lines); - dbg!(&map); - dict.insert(map.from, map); - } + let dict = parse_to_maps(data); let result = target_seeds .trim() .strip_prefix("seeds: ") @@ -86,6 +72,22 @@ impl Day for Day05 { } } +fn parse_to_maps<'a>(data: impl Iterator) -> HashMap { + let mut dict = HashMap::new(); + + for (_, lines) in (&data.group_by(|x| x.len() > 0)) + .into_iter() + .filter(|(x, _)| *x) + { + let lines = lines.collect::>(); + dbg!(&lines); + let map = Map::from_vec(lines); + dbg!(&map); + dict.insert(map.from, map); + } + dict +} + fn map_seed_to_position(var_name: usize, dict: &HashMap) -> usize { let mut kind = Kind::Seed; let mut source = var_name;