diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-12-19 14:21:43 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-19 14:21:43 +0000 |
| commit | 5e5e1b4b306d86cd105696b76fafa0346c5a4f24 (patch) | |
| tree | a0bb76de9f0e66a9d8ff5e9a7cad5906123c6fda /challenge-196 | |
| parent | aac65e924a4cd2c7708d732f610069e4c7bbb325 (diff) | |
| parent | b62bc69dd1a6d74e70775b4d6bbbe78ce1a4c7c8 (diff) | |
| download | perlweeklychallenge-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.raku | 23 | ||||
| -rw-r--r-- | challenge-196/mark-anderson/raku/ch-2.raku | 28 |
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] +} |
