aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Andre <benjaminandre23@gmail.com>2025-09-22 21:48:33 +0200
committerBenjamin Andre <benjaminandre23@gmail.com>2025-09-22 21:48:33 +0200
commita000320c2583116886e04b429f4be2e07bb7c1fc (patch)
tree5c250f976ec6a5d6dc2d4fb740990717a1a0e598
parentc4e70544812c339e0344ad3127de18a5dbf98c34 (diff)
downloadperlweeklychallenge-club-a000320c2583116886e04b429f4be2e07bb7c1fc.tar.gz
perlweeklychallenge-club-a000320c2583116886e04b429f4be2e07bb7c1fc.tar.bz2
perlweeklychallenge-club-a000320c2583116886e04b429f4be2e07bb7c1fc.zip
feat(340): completed both challenges
-rwxr-xr-xchallenge-340/benjamin-andre/rust/ch-1.rs23
-rwxr-xr-xchallenge-340/benjamin-andre/rust/ch-2.rs28
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-340/benjamin-andre/rust/ch-1.rs b/challenge-340/benjamin-andre/rust/ch-1.rs
new file mode 100755
index 0000000000..235095ac87
--- /dev/null
+++ b/challenge-340/benjamin-andre/rust/ch-1.rs
@@ -0,0 +1,23 @@
+#!/bin/sh
+//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit
+
+fn duplicate_removals(s: &str) -> String {
+ let mut stack = Vec::new();
+ for c in s.chars() {
+ if stack.last() == Some(&c) {
+ stack.pop();
+ } else {
+ stack.push(c);
+ }
+ }
+ stack.into_iter().collect()
+}
+
+#[test]
+fn example() {
+ assert_eq!(duplicate_removals("abbaca"), "ca");
+ assert_eq!(duplicate_removals("azxxzy"), "ay");
+ assert_eq!(duplicate_removals("aaaaaaaa"), "");
+ assert_eq!(duplicate_removals("aabccba"), "a");
+ assert_eq!(duplicate_removals("abcddcba"), "");
+}
diff --git a/challenge-340/benjamin-andre/rust/ch-2.rs b/challenge-340/benjamin-andre/rust/ch-2.rs
new file mode 100755
index 0000000000..597b2d7fe5
--- /dev/null
+++ b/challenge-340/benjamin-andre/rust/ch-2.rs
@@ -0,0 +1,28 @@
+#!/bin/sh
+//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit
+
+fn ascending_numbers(s: &str) -> bool {
+ let numbers: Vec<u32> = s
+ .split_whitespace()
+ .filter_map(|token| token.parse().ok())
+ .collect();
+ numbers.windows(2).all(|w| w[0] < w[1])
+}
+
+#[test]
+fn example() {
+ assert_eq!(
+ ascending_numbers("The cat has 3 kittens 7 toys 10 beds"),
+ true
+ );
+ assert_eq!(
+ ascending_numbers("Alice bought 5 apples 2 oranges 9 bananas"),
+ false
+ );
+ assert_eq!(
+ ascending_numbers("I ran 1 mile 2 days 3 weeks 4 months"),
+ true
+ );
+ assert_eq!(ascending_numbers("Bob has 10 cars 10 bikes"), false);
+ assert_eq!(ascending_numbers("Zero is 0 one is 1 two is 2"), true);
+}