diff options
| author | Benjamin Andre <benjaminandre23@gmail.com> | 2025-09-22 21:48:33 +0200 |
|---|---|---|
| committer | Benjamin Andre <benjaminandre23@gmail.com> | 2025-09-22 21:48:33 +0200 |
| commit | a000320c2583116886e04b429f4be2e07bb7c1fc (patch) | |
| tree | 5c250f976ec6a5d6dc2d4fb740990717a1a0e598 | |
| parent | c4e70544812c339e0344ad3127de18a5dbf98c34 (diff) | |
| download | perlweeklychallenge-club-a000320c2583116886e04b429f4be2e07bb7c1fc.tar.gz perlweeklychallenge-club-a000320c2583116886e04b429f4be2e07bb7c1fc.tar.bz2 perlweeklychallenge-club-a000320c2583116886e04b429f4be2e07bb7c1fc.zip | |
feat(340): completed both challenges
| -rwxr-xr-x | challenge-340/benjamin-andre/rust/ch-1.rs | 23 | ||||
| -rwxr-xr-x | challenge-340/benjamin-andre/rust/ch-2.rs | 28 |
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); +} |
