diff options
| author | Mark <53903062+andemark@users.noreply.github.com> | 2023-05-22 23:19:15 +0000 |
|---|---|---|
| committer | Mark <53903062+andemark@users.noreply.github.com> | 2023-05-22 23:19:15 +0000 |
| commit | 5a9267195b0515223a98a74a3999f051087d273f (patch) | |
| tree | f87b747a966bc6f1e2da471f8900d32ecb6f73bc | |
| parent | 03cdd30f2ebc4d18d17226369d2f8745ce79f1b1 (diff) | |
| download | perlweeklychallenge-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.raku | 20 |
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) } } |
