aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Andre <benjaminandre23@gmail.com>2025-11-17 11:13:42 +0100
committerBenjamin Andre <benjaminandre23@gmail.com>2025-11-17 11:13:42 +0100
commitf938466433fd8395eec407d9710042d3759ea94c (patch)
treedf0cdd38decee01396eddf9a87ec9b9354deb422
parent51f93bc0962522ed3bc5152f8266cc780c83f190 (diff)
downloadperlweeklychallenge-club-f938466433fd8395eec407d9710042d3759ea94c.tar.gz
perlweeklychallenge-club-f938466433fd8395eec407d9710042d3759ea94c.tar.bz2
perlweeklychallenge-club-f938466433fd8395eec407d9710042d3759ea94c.zip
feat(348): completed both challenges
-rwxr-xr-xchallenge-348/benjamin-andre/rust/ch-1.rs17
-rwxr-xr-xchallenge-348/benjamin-andre/rust/ch-2.rs25
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);
+}