diff options
| -rw-r--r-- | challenge-073/jason-messer/raku/ch-1.p6 | 13 | ||||
| -rw-r--r-- | challenge-073/jason-messer/raku/ch-2.p6 | 20 |
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); |
