in reply to using perl to find words for scrabble

You might be interested to see Task 2 of this week's challenge which is along similar lines.

  • Comment on Re: using perl to find words for scrabble

Replies are listed 'Best First'.
Re^2: using perl to find words for scrabble
by tybalt89 (Monsignor) on Dec 09, 2019 at 21:02 UTC

    Something like this?

    It takes more code to extract the required info from the provided data than to solve the problem :)

    #!/usr/bin/perl use strict; # https://perlweeklychallenge.org/blog/perl-weekly-challen +ge-038/ use warnings; use Path::Tiny; use List::Util qw( shuffle sum uniq ); my $config = join '', <DATA>; # extract configuration my %points = map +( $_, $config =~ /(\d+) points?\n\n.*$_/ ), 'A' .. ' +Z'; my $tiles = join '', sort + (shuffle map { $config =~ /$_ .x(\d+)/; ($_) x $1 } 'A' .. 'Z')[1 .. + 7]; my @best; # words indexed by score $tiles =~ join '.*', sort split // and $best[sum @points{split //}] .= + " $_" for uniq uc(path('/usr/share/dict/words')->slurp) =~ /^[A-Z]{1,7}$/g +m; print "Best for $tiles is$best[-1] score $#best\n"; __DATA__ 1 point A (x8), G (x3), I (x5), S (x7), U (x5), X (x2), Z (x5) 2 points E (x9), J (x3), L (x3), R (x3), V (x3), Y (x5) 3 points F (x3), D (x3), P (x5), W (x5) 4 points B (x5), N (x4) 5 points T (x5), O (x3), H (x3), M (x4), C (x4) 10 points K (x2), Q (x2)