aboutsummaryrefslogtreecommitdiff
path: root/challenge-256
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2024-02-12 08:45:25 +0000
committerMark <53903062+andemark@users.noreply.github.com>2024-02-12 08:45:25 +0000
commite34c195322e37debb1cd3d45bec6197dfaaf5c66 (patch)
tree4dc1e1c41ef36b71cc66e389ea1e955d41720115 /challenge-256
parent8330161acea0a830f3b28421c68a4392aca5c069 (diff)
downloadperlweeklychallenge-club-e34c195322e37debb1cd3d45bec6197dfaaf5c66.tar.gz
perlweeklychallenge-club-e34c195322e37debb1cd3d45bec6197dfaaf5c66.tar.bz2
perlweeklychallenge-club-e34c195322e37debb1cd3d45bec6197dfaaf5c66.zip
Challenge 256 Solutions (Raku)
Diffstat (limited to 'challenge-256')
-rw-r--r--challenge-256/mark-anderson/raku/ch-1.raku12
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)
}
}