diff options
| author | Benjamin Andre <benjaminandre23@gmail.com> | 2025-11-17 11:13:42 +0100 |
|---|---|---|
| committer | Benjamin Andre <benjaminandre23@gmail.com> | 2025-11-17 11:13:42 +0100 |
| commit | f938466433fd8395eec407d9710042d3759ea94c (patch) | |
| tree | df0cdd38decee01396eddf9a87ec9b9354deb422 | |
| parent | 51f93bc0962522ed3bc5152f8266cc780c83f190 (diff) | |
| download | perlweeklychallenge-club-f938466433fd8395eec407d9710042d3759ea94c.tar.gz perlweeklychallenge-club-f938466433fd8395eec407d9710042d3759ea94c.tar.bz2 perlweeklychallenge-club-f938466433fd8395eec407d9710042d3759ea94c.zip | |
feat(348): completed both challenges
| -rwxr-xr-x | challenge-348/benjamin-andre/rust/ch-1.rs | 17 | ||||
| -rwxr-xr-x | challenge-348/benjamin-andre/rust/ch-2.rs | 25 |
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-348/benjamin-andre/rust/ch-1.rs b/challenge-348/benjamin-andre/rust/ch-1.rs new file mode 100755 index 0000000000..f8734141cc --- /dev/null +++ b/challenge-348/benjamin-andre/rust/ch-1.rs @@ -0,0 +1,17 @@ +#!/bin/sh +//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit + +fn string_alike(s: &str) -> bool { + let mid = s.len() / 2; + let count_vowels = |s: &str| s.chars().filter(|c| "aeiouAEIOU".contains(*c)).count(); + count_vowels(&s[..mid]) == count_vowels(&s[mid..]) +} + +#[test] +fn example() { + assert_eq!(string_alike("textbook"), false); + assert_eq!(string_alike("book"), true); + assert_eq!(string_alike("AbCdEfGh"), true); + assert_eq!(string_alike("rhythmmyth"), true); + assert_eq!(string_alike("UmpireeAudio"), false); +} diff --git a/challenge-348/benjamin-andre/rust/ch-2.rs b/challenge-348/benjamin-andre/rust/ch-2.rs new file mode 100755 index 0000000000..ec96e04852 --- /dev/null +++ b/challenge-348/benjamin-andre/rust/ch-2.rs @@ -0,0 +1,25 @@ +#!/bin/sh +//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit + +fn convert_time(source: &str, target: &str) -> i32 { + let to_minutes = |s: &str| { + let parts: Vec<_> = s.split(':').collect(); + parts[0].parse::<i32>().unwrap() * 60 + parts[1].parse::<i32>().unwrap() + }; + let mut diff = (to_minutes(target) - to_minutes(source) + 1440) % 1440; + let mut ops = 0; + for &step in &[60, 15, 5, 1] { + ops += diff / step; + diff %= step; + } + ops +} + +#[test] +fn example() { + assert_eq!(convert_time("02:30", "02:45"), 1); + assert_eq!(convert_time("11:55", "12:15"), 2); + assert_eq!(convert_time("09:00", "13:00"), 4); + assert_eq!(convert_time("23:45", "00:30"), 3); + assert_eq!(convert_time("14:20", "15:25"), 2); +} |
