diff options
| author | Benjamin Andre <benjaminandre23@gmail.com> | 2025-11-10 15:13:13 +0100 |
|---|---|---|
| committer | Benjamin Andre <benjaminandre23@gmail.com> | 2025-11-10 15:13:13 +0100 |
| commit | cb2188c231fe899e55ebf74a92a8ba72f8a43ba2 (patch) | |
| tree | 371060e824fd5678dc7f27cf84c08cb7ed256ff1 | |
| parent | 83c02309afd45cdbfce02a54ee39361fce28c592 (diff) | |
| download | perlweeklychallenge-club-cb2188c231fe899e55ebf74a92a8ba72f8a43ba2.tar.gz perlweeklychallenge-club-cb2188c231fe899e55ebf74a92a8ba72f8a43ba2.tar.bz2 perlweeklychallenge-club-cb2188c231fe899e55ebf74a92a8ba72f8a43ba2.zip | |
feat(347): completed both challenges
| -rwxr-xr-x | challenge-347/benjamin-andre/rust/ch-1.rs | 27 | ||||
| -rwxr-xr-x | challenge-347/benjamin-andre/rust/ch-2.rs | 28 |
2 files changed, 55 insertions, 0 deletions
diff --git a/challenge-347/benjamin-andre/rust/ch-1.rs b/challenge-347/benjamin-andre/rust/ch-1.rs new file mode 100755 index 0000000000..fa058a8cfe --- /dev/null +++ b/challenge-347/benjamin-andre/rust/ch-1.rs @@ -0,0 +1,27 @@ +#!/bin/sh +//usr/bin/env rustc --test $0 -o kachow && ./kachow --nocapture; rm -f kachow ; exit + +fn format_date(s: &str) -> String { + let months = [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + ]; + let parts: Vec<_> = s.split_whitespace().collect(); + let day: u32 = parts[0] + .chars() + .filter(|c| c.is_ascii_digit()) + .collect::<String>() + .parse() + .unwrap(); + let month = months.iter().position(|&m| m == parts[1]).unwrap() + 1; + let year = parts[2]; + format!("{}-{:02}-{:02}", year, month, day) +} + +#[test] +fn example() { + assert_eq!(format_date("1st Jan 2025"), "2025-01-01"); + assert_eq!(format_date("22nd Feb 2025"), "2025-02-22"); + assert_eq!(format_date("15th Apr 2025"), "2025-04-15"); + assert_eq!(format_date("23rd Oct 2025"), "2025-10-23"); + assert_eq!(format_date("31st Dec 2025"), "2025-12-31"); +} diff --git a/challenge-347/benjamin-andre/rust/ch-2.rs b/challenge-347/benjamin-andre/rust/ch-2.rs new file mode 100755 index 0000000000..5e49813e77 --- /dev/null +++ b/challenge-347/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 format_phone_number(phone: &str) -> String { + let digits: String = phone.chars().filter(|c| c.is_ascii_digit()).collect(); + let mut result = Vec::new(); + let mut i = 0; + while i < digits.len() { + let remaining = digits.len() - i; + let block_size = if remaining <= 4 && remaining != 3 { + 2 + } else { + 3 + }; + result.push(&digits[i..i + block_size]); + i += block_size; + } + result.join("-") +} + +#[test] +fn example() { + assert_eq!(format_phone_number("1-23-45-6"), "123-456"); + assert_eq!(format_phone_number("1234"), "12-34"); + assert_eq!(format_phone_number("12 345-6789"), "123-456-789"); + assert_eq!(format_phone_number("123 4567"), "123-45-67"); + assert_eq!(format_phone_number("123 456-78"), "123-456-78"); +} |
