From f581d92a97105501aaf96da62ea7fcd54186ad0a Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Sat, 3 Dec 2022 12:25:46 +0100 Subject: [PATCH] 2022 rust day 3 --- 2022/rust/src/solutions/day03.rs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/2022/rust/src/solutions/day03.rs b/2022/rust/src/solutions/day03.rs index d7bc1b0..16e354e 100644 --- a/2022/rust/src/solutions/day03.rs +++ b/2022/rust/src/solutions/day03.rs @@ -25,18 +25,7 @@ fn solve2(data: &Vec<(HashSet, HashSet)>) -> i32 { .collect::>>() .chunks_exact(3) .map(|chunks| { - let char = { - let mut iter = chunks.iter().cloned(); - iter.next() - .map(|set| { - iter.fold(set, |set1, set2| { - set1.intersection(&set2).cloned().collect() - }) - }) - .map(|x| *x.iter().next().unwrap()) - .unwrap() - }; - convert_char(char) + convert_char(find_intersection(chunks)) }) .sum() } @@ -46,6 +35,18 @@ fn convert_char(char: char) -> i32 { char - if char < 97 { 38 } else { 96 } } +fn find_intersection(sets: &[HashSet]) -> char { + let mut iter = sets.iter().cloned(); + iter.next() + .map(|set| { + iter.fold(set, |set1, set2| { + set1.intersection(&set2).cloned().collect() + }) + }) + .map(|x| *x.iter().next().unwrap()) + .unwrap() +} + fn parse_data(data: Vec) -> Vec<(HashSet, HashSet)> { data.iter() .map(|str| {