aboutsummaryrefslogtreecommitdiff
path: root/challenge-216/barroff
diff options
context:
space:
mode:
authorBarrOff <58253563+BarrOff@users.noreply.github.com>2023-05-14 23:53:57 +0200
committerBarrOff <58253563+BarrOff@users.noreply.github.com>2023-05-14 23:53:57 +0200
commit80115428f1191f170276cb3d9bd228c7a14b4985 (patch)
tree31a10dcfa1876f9ab0de5c50fb9334042cf867f4 /challenge-216/barroff
parentfb1656431794d78e8a70c8a81a5ab0bdb88b6c84 (diff)
downloadperlweeklychallenge-club-80115428f1191f170276cb3d9bd228c7a14b4985.tar.gz
perlweeklychallenge-club-80115428f1191f170276cb3d9bd228c7a14b4985.tar.bz2
perlweeklychallenge-club-80115428f1191f170276cb3d9bd228c7a14b4985.zip
feat: add solution for challenge 216 from BarrOff
Diffstat (limited to 'challenge-216/barroff')
-rw-r--r--challenge-216/barroff/raku/ch-1.raku26
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')";
+}