aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-078/jason-messer/raku/ch-1.p615
-rw-r--r--challenge-078/jason-messer/raku/ch-2.p616
2 files changed, 31 insertions, 0 deletions
diff --git a/challenge-078/jason-messer/raku/ch-1.p6 b/challenge-078/jason-messer/raku/ch-1.p6
new file mode 100644
index 0000000000..e125bdfbac
--- /dev/null
+++ b/challenge-078/jason-messer/raku/ch-1.p6
@@ -0,0 +1,15 @@
+use v6.d;
+
+my @A = (9, 10, 7, 5, 6, 1);
+my @B = (3, 4, 5);
+
+sub get-leaders(@a where .all > 0) {
+ my @leaders = gather for ^@a -> $i {
+ take @a[$i] if @a[$i + 1..*].grep( {@a[$i] < $_} ).elems == 0;
+ }
+ if @leaders == Empty { return (0).List }
+ return @leaders;
+}
+
+say get-leaders(@A);
+say get-leaders(@B);
diff --git a/challenge-078/jason-messer/raku/ch-2.p6 b/challenge-078/jason-messer/raku/ch-2.p6
new file mode 100644
index 0000000000..2f42405dab
--- /dev/null
+++ b/challenge-078/jason-messer/raku/ch-2.p6
@@ -0,0 +1,16 @@
+use v6.d;
+
+my @A1 = (10, 20, 30, 40, 50);
+my @B1 = (3, 4);
+
+my @A2 = (7, 4, 2, 6, 3);
+my @B2 = (1, 3, 4);
+
+sub rotate-array-by(:@array, :@indices) {
+ gather for @indices {
+ take @array.rotate: $_;
+ }
+}
+
+.say for rotate-array-by :array(@A1), :indices(@B1);
+.say for rotate-array-by :array(@A2), :indices(@B2);