diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-05-08 09:15:28 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-05-08 09:15:28 +0200 |
| commit | 9318b7bed015211d743f030caeccd84dd533a2fe (patch) | |
| tree | d44926fcc7e812288f15018057554bd2035ad687 | |
| parent | 19e0735e7ba137750237e2e0ca905d12aaa8cdc5 (diff) | |
| download | perlweeklychallenge-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.p6 | 34 |
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; +} |
