diff --git a/README.md b/README.md index 7bc8d1b..5e87941 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ other languages. - Fibonacci Product (https://www.codewars.com/kata/5541f58a944b85ce6d00006a) - Valid Parentheses (https://www.codewars.com/kata/52774a314c2333f0a7000688) - Alphanumeric (https://www.codewars.com/kata/526dbd6c8c0eb53254000110) +- Lazy Repeater (https://www.codewars.com/kata/51fc3beb41ecc97ee20000c3) #### Kata 6 diff --git a/src/codewars/lazy_repeater.rs b/src/codewars/lazy_repeater.rs new file mode 100644 index 0000000..b5d51a8 --- /dev/null +++ b/src/codewars/lazy_repeater.rs @@ -0,0 +1,18 @@ +fn make_looper(s: &str) -> impl FnMut() -> char + '_ { + let mut char_looper = s.chars().cycle(); + move || char_looper.next().unwrap() +} + +#[cfg(test)] +mod tests { + use super::make_looper; + + #[test] + fn test_looper_correctly_loops_over_given_characters() { + let mut looper = make_looper("abc"); + assert_eq!('a', looper()); + assert_eq!('b', looper()); + assert_eq!('c', looper()); + assert_eq!('a', looper()); + } +} diff --git a/src/codewars/mod.rs b/src/codewars/mod.rs index 14754b9..825091b 100644 --- a/src/codewars/mod.rs +++ b/src/codewars/mod.rs @@ -47,3 +47,4 @@ mod summation; mod sumpairs; mod valid_parentheses; mod valid_spacing; +mod lazy_repeater;