diff options
| author | Jonas Berlin <jonas.berlin@nitorcreations.com> | 2021-02-09 15:50:35 +0200 |
|---|---|---|
| committer | Jonas Berlin <jonas.berlin@nitorcreations.com> | 2021-02-09 15:50:35 +0200 |
| commit | 42cdc5edff4eb8f5bcc2e1ca3cb95de6f3b43eb2 (patch) | |
| tree | 276ec9680851f07fb5922fe8696d96ede0a080ec | |
| parent | 641e3a346cbf54c6bb4fe7bc76d674d9845856bc (diff) | |
| download | perlweeklychallenge-club-42cdc5edff4eb8f5bcc2e1ca3cb95de6f3b43eb2.tar.gz perlweeklychallenge-club-42cdc5edff4eb8f5bcc2e1ca3cb95de6f3b43eb2.tar.bz2 perlweeklychallenge-club-42cdc5edff4eb8f5bcc2e1ca3cb95de6f3b43eb2.zip | |
UTF-8 fix
| -rw-r--r-- | challenge-099/xkr47/rust/ch-1.rs | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/challenge-099/xkr47/rust/ch-1.rs b/challenge-099/xkr47/rust/ch-1.rs index 913903605e..50e83f14f4 100644 --- a/challenge-099/xkr47/rust/ch-1.rs +++ b/challenge-099/xkr47/rust/ch-1.rs @@ -12,19 +12,22 @@ fn main() { } fn do_match(text: &str, pattern: &str) -> bool { - if pattern.is_empty() { - text.is_empty() - } else { - match pattern.chars().next().unwrap() { - '*' => - do_match(text, &pattern[1..]) || - (!text.is_empty() && do_match(&text[1..], pattern)), - '?' => - !text.is_empty() && do_match(&text[1..], &pattern[1..]), - ch => - text.chars().next() == Some(ch) && do_match(&text[1..], &pattern[1..]) + fn inner(text: &[char], pattern: &[char]) -> bool { + if pattern.is_empty() { + text.is_empty() + } else { + match pattern[0] { + '*' => + inner(text, &pattern[1..]) || + (!text.is_empty() && inner(&text[1..], pattern)), + '?' => + !text.is_empty() && inner(&text[1..], &pattern[1..]), + ch => + text.get(0) == Some(&ch) && inner(&text[1..], &pattern[1..]) + } } } + inner(&text.chars().collect::<Vec<char>>(), &pattern.chars().collect::<Vec<char>>()) } #[cfg(test)] @@ -79,4 +82,9 @@ mod tests { fn do_test14() { assert_eq!(do_match("a", "*?"), true); } + + #[test] + fn do_test15() { + assert_eq!(do_match("få", "f*"), true); + } } |
