diff options
| -rw-r--r-- | challenge-256/mark-anderson/raku/ch-1.raku | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/challenge-256/mark-anderson/raku/ch-1.raku b/challenge-256/mark-anderson/raku/ch-1.raku index 11e69decd1..63d957d319 100644 --- a/challenge-256/mark-anderson/raku/ch-1.raku +++ b/challenge-256/mark-anderson/raku/ch-1.raku @@ -1,17 +1,19 @@ #!/usr/bin/env raku -use Adverb::Eject; use Test; is max-pairs(<ab de ed bc>), 1; is max-pairs(<aa ba cd ed>), 0; is max-pairs(<uv qp st vu mn pq>), 2; +# Credit to Niels van Dijke (PerlBoy1967) for this algorithm. + sub max-pairs(*@words) { - + do while @words + my $bh = BagHash.new; + + + do gather for @words { - my $w = @words.pop; - my $k = @words.first(* eq $w.flip, :k); - @words[$k]:eject with $k + .take if $bh{$_}; + $bh.add(.flip) } } |
