aboutsummaryrefslogtreecommitdiff
path: root/challenge-196
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-12-19 14:21:43 +0000
committerGitHub <noreply@github.com>2022-12-19 14:21:43 +0000
commit5e5e1b4b306d86cd105696b76fafa0346c5a4f24 (patch)
treea0bb76de9f0e66a9d8ff5e9a7cad5906123c6fda /challenge-196
parentaac65e924a4cd2c7708d732f610069e4c7bbb325 (diff)
parentb62bc69dd1a6d74e70775b4d6bbbe78ce1a4c7c8 (diff)
downloadperlweeklychallenge-club-5e5e1b4b306d86cd105696b76fafa0346c5a4f24.tar.gz
perlweeklychallenge-club-5e5e1b4b306d86cd105696b76fafa0346c5a4f24.tar.bz2
perlweeklychallenge-club-5e5e1b4b306d86cd105696b76fafa0346c5a4f24.zip
Merge pull request #7280 from andemark/branch-for-challenge-196
Challenge 196 Solutions (Raku)
Diffstat (limited to 'challenge-196')
-rw-r--r--challenge-196/mark-anderson/raku/ch-1.raku23
-rw-r--r--challenge-196/mark-anderson/raku/ch-2.raku28
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-196/mark-anderson/raku/ch-1.raku b/challenge-196/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..80b4f5fc45
--- /dev/null
+++ b/challenge-196/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/env raku
+use Test;
+
+is-deeply pattern-acb(3,1,4,2), (1,4,2);
+is-deeply pattern-acb(1,2,3,4), ();
+is-deeply pattern-acb(1,3,2,4,6,5), (1,3,2);
+is-deeply pattern-acb(1,3,4,2), (1,3,2);
+
+sub pattern-acb(+$list)
+{
+ for 0..$list-1 -> $a
+ {
+ for $a+1..$list-1 -> $b
+ {
+ for $b+1..$list-1 -> $c
+ {
+ return $list[$a,$b,$c] if $list[$a] < $list[$c] < $list[$b]
+ }
+ }
+ }
+
+ return ()
+}
diff --git a/challenge-196/mark-anderson/raku/ch-2.raku b/challenge-196/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..763f3ed2f3
--- /dev/null
+++ b/challenge-196/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+use Test;
+
+is-deeply range-list(1,3,4,5,7), ((3,5),);
+is-deeply range-list(1,2,3,6,7,9), ((1,3), (6,7));
+is-deeply range-list(0,1,2,4,5,6,8,9), ((0,2), (4,6), (8,9));
+
+sub range-list(+$list)
+{
+ my ($h, $t) = (0, 0);
+
+ my $a := gather for $list.rotor(2 => -1, :partial)
+ {
+ if .tail - .head == 1
+ {
+ $t++
+ }
+
+ else
+ {
+ take $h, $t if $h < $t;
+ $t++;
+ $h = $t
+ }
+ }
+
+ $list[$a]
+}