aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-05-08 09:15:28 +0200
committerLuca Ferrari <fluca1978@gmail.com>2023-05-08 09:15:28 +0200
commit9318b7bed015211d743f030caeccd84dd533a2fe (patch)
treed44926fcc7e812288f15018057554bd2035ad687
parent19e0735e7ba137750237e2e0ca905d12aaa8cdc5 (diff)
downloadperlweeklychallenge-club-9318b7bed015211d743f030caeccd84dd533a2fe.tar.gz
perlweeklychallenge-club-9318b7bed015211d743f030caeccd84dd533a2fe.tar.bz2
perlweeklychallenge-club-9318b7bed015211d743f030caeccd84dd533a2fe.zip
Task2 done
-rw-r--r--challenge-216/luca-ferrari/raku/ch-2.p634
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-216/luca-ferrari/raku/ch-2.p6 b/challenge-216/luca-ferrari/raku/ch-2.p6
new file mode 100644
index 0000000000..9544e801f6
--- /dev/null
+++ b/challenge-216/luca-ferrari/raku/ch-2.p6
@@ -0,0 +1,34 @@
+#!raku
+
+#
+# Perl Weekly Challenge 216
+# Task 2
+#
+# See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-216/>
+#
+
+sub MAIN( *@strings is copy ) {
+ my $letters = BagHash.new: @strings.pop.comb;
+ my %stickers;
+ my $loop = 0;
+
+ while ( $letters.values.grep( * >= 1 ) ) {
+ $loop++;
+
+ for $letters.keys -> $needle {
+ next if ! $letters{ $needle };
+ my $found = False;
+ for @strings -> $word {
+ if ( $word.comb.grep( $needle ) ) {
+ $letters{ $needle }--;
+ %stickers{ $word }{ $loop }.push: $needle;
+ $found = True;
+ }
+ }
+
+ say "Cannot find $needle in any word!" and exit if ! $found;
+ }
+ }
+
+ "$_ used { %stickers{ $_ }.keys.elems } times".say for %stickers.keys;
+}