From 8877025bc7855ade146ddbb1f9b5b149f511947a Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Tue, 30 Jun 2020 20:11:33 -0300 Subject: [PATCH] Solution --- rust/etl/src/lib.rs | 7 ++++++- rust/etl/tests/etl.rs | 3 --- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/rust/etl/src/lib.rs b/rust/etl/src/lib.rs index 4b643b0..c3ffdf7 100644 --- a/rust/etl/src/lib.rs +++ b/rust/etl/src/lib.rs @@ -1,5 +1,10 @@ use std::collections::BTreeMap; pub fn transform(h: &BTreeMap>) -> BTreeMap { - unimplemented!("How will you transform the tree {:?}?", h) + h.into_iter() + .flat_map(|(value, letters)| letters.iter().map(move |l| (l.to_lowercase(), value))) + .fold(BTreeMap::new(), |mut acc, (letter, value)| { + acc.insert(letter.to_string().chars().nth(0).unwrap(), *value); + acc + }) } diff --git a/rust/etl/tests/etl.rs b/rust/etl/tests/etl.rs index ff28dcf..e50133c 100644 --- a/rust/etl/tests/etl.rs +++ b/rust/etl/tests/etl.rs @@ -12,7 +12,6 @@ fn test_transform_one_value() { } #[test] -#[ignore] fn test_transform_more_values() { let input = input_from(&[(1, vec!['A', 'E', 'I', 'O', 'U'])]); @@ -22,7 +21,6 @@ fn test_transform_more_values() { } #[test] -#[ignore] fn test_more_keys() { let input = input_from(&[(1, vec!['A', 'E']), (2, vec!['D', 'G'])]); @@ -32,7 +30,6 @@ fn test_more_keys() { } #[test] -#[ignore] fn test_full_dataset() { let input = input_from(&[ (1, vec!['A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T']),