in reply to Re: using perl to find words for scrabble
in thread using perl to find words for scrabble
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)
|
|---|