aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-03-19 15:07:40 +0000
committerGitHub <noreply@github.com>2024-03-19 15:07:40 +0000
commitcd4b509e87ab5496d968b083f0dfff8dc067d659 (patch)
tree6a5c75e779707acd90447c7ec11c90699a282a05
parent03aff8a6e185702c98738fcb4597f1a39710e0cf (diff)
parentf569c97f29246520fcbaa56bf92f76b5de9638ff (diff)
downloadperlweeklychallenge-club-cd4b509e87ab5496d968b083f0dfff8dc067d659.tar.gz
perlweeklychallenge-club-cd4b509e87ab5496d968b083f0dfff8dc067d659.tar.bz2
perlweeklychallenge-club-cd4b509e87ab5496d968b083f0dfff8dc067d659.zip
Merge pull request #9774 from andemark/challenge-261
ch-2.raku do-over
-rw-r--r--challenge-261/mark-anderson/raku/ch-2.raku19
1 files changed, 16 insertions, 3 deletions
diff --git a/challenge-261/mark-anderson/raku/ch-2.raku b/challenge-261/mark-anderson/raku/ch-2.raku
index 8254214c62..2eb6d5830c 100644
--- a/challenge-261/mark-anderson/raku/ch-2.raku
+++ b/challenge-261/mark-anderson/raku/ch-2.raku
@@ -5,6 +5,19 @@ is multiply-by-two([5,3,6,1,12], 3), 24;
is multiply-by-two([1,2,4,3], 1), 8;
is multiply-by-two([5,6,7], 2), 2;
-multi multiply-by-two(@i, $s) { samewith(@i.BagHash, $s) }
-multi multiply-by-two($b, $s) { return $s }
-multi multiply-by-two($b, $s where ?$b{$s}) { $b{(0..$s)}:delete; samewith($b, $s*2) }
+say multiply-by-two((1..100000).roll(100000), 5);
+
+sub multiply-by-two(@a, $s)
+{
+ my $seq := $s, $s*2, $s*4, $s*8...@a.max;
+ my @r = (@a (&) $seq.cache).keys.sort;
+
+ my @i = gather for @r Z== $seq
+ {
+ last if .not;
+ take $++
+ }
+
+ return $s unless @i;
+ return @r[@i.tail] * 2
+}