aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-284/wambash/raku/ch-1.raku21
-rw-r--r--challenge-284/wambash/raku/ch-2.raku19
2 files changed, 40 insertions, 0 deletions
diff --git a/challenge-284/wambash/raku/ch-1.raku b/challenge-284/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..abdac8eb19
--- /dev/null
+++ b/challenge-284/wambash/raku/ch-1.raku
@@ -0,0 +1,21 @@
+#!/usr/bin/env raku
+
+sub lucky-integers (+ints) {
+ ints
+ andthen .Bag
+ andthen .grep: { .key == .value }\
+ andthen .max
+ andthen .?key
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is lucky-integers(2,2,3,4),2;
+ is lucky-integers(1, 2, 2, 3, 3, 3),3;
+ is lucky-integers(1, 1, 1, 3),Nil;
+ done-testing;
+}
+
+multi MAIN (+ints) {
+ say lucky-integers(ints) // -1
+}
diff --git a/challenge-284/wambash/raku/ch-2.raku b/challenge-284/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..645af3e024
--- /dev/null
+++ b/challenge-284/wambash/raku/ch-2.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/env raku
+
+sub relative-sort (@list1,@list2) {
+ my %sort_by is default(Inf) = @list2.antipairs;
+
+ @list1.sort: { %sort_by{$_} => $_ }
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is relative-sort((2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5),(2, 1, 4, 3, 5, 6)), (2, 2, 1, 4, 3, 3, 5, 6, 7, 8, 9);
+ is relative-sort((3, 3, 4, 6, 2, 4, 2, 1, 3),(1, 3, 2)), (1, 3, 3, 3, 2, 2, 4, 4, 6);
+ is relative-sort((3, 0, 5, 0, 2, 1, 4, 1, 1),(1, 0, 3, 2)), (1, 1, 1, 0, 0, 3, 2, 4, 5);
+ done-testing;
+}
+
+multi MAIN ($list1,$list2) {
+ put relative-sort $list1.comb(/\d+/), $list2.comb(/\d+/)
+}