aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2023-05-22 23:19:15 +0000
committerMark <53903062+andemark@users.noreply.github.com>2023-05-22 23:19:15 +0000
commit5a9267195b0515223a98a74a3999f051087d273f (patch)
treef87b747a966bc6f1e2da471f8900d32ecb6f73bc
parent03cdd30f2ebc4d18d17226369d2f8745ce79f1b1 (diff)
downloadperlweeklychallenge-club-5a9267195b0515223a98a74a3999f051087d273f.tar.gz
perlweeklychallenge-club-5a9267195b0515223a98a74a3999f051087d273f.tar.bz2
perlweeklychallenge-club-5a9267195b0515223a98a74a3999f051087d273f.zip
Challenge 218 Solutions (Raku)
-rw-r--r--challenge-218/mark-anderson/raku/ch-1.raku20
1 files changed, 3 insertions, 17 deletions
diff --git a/challenge-218/mark-anderson/raku/ch-1.raku b/challenge-218/mark-anderson/raku/ch-1.raku
index 0ffa1553bb..a251667d75 100644
--- a/challenge-218/mark-anderson/raku/ch-1.raku
+++ b/challenge-218/mark-anderson/raku/ch-1.raku
@@ -20,24 +20,10 @@ is max-product(0,0,0,0), 0;
is max-product(1,2,0,-1), 0;
is max-product(-1,0,0,-1), 0;
-multi max-product(+$a where .elems == 3)
+sub max-product(+$a)
{
- [*] |$a
-}
-
-multi max-product(+$a)
-{
- my %c = $a.classify({ .sign });
-
- return [*] $a.sort.tail(3) if $a == any %c.values;
-
- my @neg = %c{-1}.sort.head(2);
- my @pos = %c{1}.sort.tail(3);
-
- max gather
+ given $a.sort.Array
{
- take 0;
- take [*] @pos if @pos == 3;
- take [*] |@neg, @pos.max if @neg == 2
+ max ([*] .tail(3)), ([*] flat .head(2), .tail)
}
}