aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-073/jason-messer/raku/ch-1.p613
-rw-r--r--challenge-073/jason-messer/raku/ch-2.p620
2 files changed, 33 insertions, 0 deletions
diff --git a/challenge-073/jason-messer/raku/ch-1.p6 b/challenge-073/jason-messer/raku/ch-1.p6
new file mode 100644
index 0000000000..8acc4c931b
--- /dev/null
+++ b/challenge-073/jason-messer/raku/ch-1.p6
@@ -0,0 +1,13 @@
+#! /usr/bin/env rakudo
+
+my @A = (1, 5, 0, 2, 9, 3, 7, 6, 4, 8);
+my $S = 3;
+
+sub min-in-window(:$array, :$window where $window > 0 ) {
+ gather for (0 .. $array.elems - $window) -> $i {
+ take min($array[$i .. $i + $window - 1]);
+ }
+}
+
+say min-in-window :array(@A), :window($S);
+#say min-window :array(['red', 'white', 'blue', 999, 0, 'yellow']), :window(2);
diff --git a/challenge-073/jason-messer/raku/ch-2.p6 b/challenge-073/jason-messer/raku/ch-2.p6
new file mode 100644
index 0000000000..ccf585387a
--- /dev/null
+++ b/challenge-073/jason-messer/raku/ch-2.p6
@@ -0,0 +1,20 @@
+#! /usr/bin/env rakudo
+
+my @A = (7, 8, 3, 12, 10);
+my @B = (4, 5, 6);
+
+# find min number in @A[0..n-1] that is less than n
+sub min-left-lt(@array) {
+ gather for (@array) {
+ state @left;
+ my $min = min(@left);
+
+ if $min < $_ { take $min }
+ else { take 0 }
+
+ @left.append($_);
+ }
+}
+
+say min-left-lt(@A);
+say min-left-lt(@B);