diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2023-05-15 01:30:02 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-15 01:30:02 +0100 |
| commit | e633314527d85aad8f3dab3901a7b69fbc7f8952 (patch) | |
| tree | 31a10dcfa1876f9ab0de5c50fb9334042cf867f4 | |
| parent | fb1656431794d78e8a70c8a81a5ab0bdb88b6c84 (diff) | |
| parent | 80115428f1191f170276cb3d9bd228c7a14b4985 (diff) | |
| download | perlweeklychallenge-club-e633314527d85aad8f3dab3901a7b69fbc7f8952.tar.gz perlweeklychallenge-club-e633314527d85aad8f3dab3901a7b69fbc7f8952.tar.bz2 perlweeklychallenge-club-e633314527d85aad8f3dab3901a7b69fbc7f8952.zip | |
Merge pull request #8073 from BarrOff/barroff-216
feat: add solution for challenge 216 from BarrOff
| -rw-r--r-- | challenge-216/barroff/raku/ch-1.raku | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/challenge-216/barroff/raku/ch-1.raku b/challenge-216/barroff/raku/ch-1.raku new file mode 100644 index 0000000000..b2ad6e9654 --- /dev/null +++ b/challenge-216/barroff/raku/ch-1.raku @@ -0,0 +1,26 @@ +#!/usr/bin/env raku + +use v6.d; + +sub is-superset(Set $reg, Str $word --> Bool) { + my Set $word-set = $word.lc.comb.Set; + $reg (&) $word-set == $reg ?? True !! False; +} + +sub registration-number(Str @words, Str $reg --> List) { + my Set $characters = $reg.lc.comb.grep({ $_ ~~ /<:L>/ }).Set; + return grep({ is-superset($characters, $_) }, @words).List; +} + +#| Run test cases +multi sub MAIN('test') { + use Test; + plan 3; + + is registration-number(Array[Str].new('abc', 'abcd', 'bcd'), 'AB1 2CD'), + ('abcd'), "works for ('abc', 'abcd', 'bcd')"; + is registration-number(Array[Str].new('job', 'james', 'bjorg'), '007 JB'), + ('job', 'bjorg'), "works for ('job', 'james', 'bjorg')"; + is registration-number(Array[Str].new('crack', 'road', 'rac'), 'C7 RA2'), + ('crack', 'rac'), "works for ('crack', 'road', 'rac')"; +} |
