use strict;
use warnings;
use Data::Dump;
my %values;
map{ $values{$_} = 1} qw(e a i o n r t l s u);
map{ $values{$_} = 2} qw(d g);
map{ $values{$_} = 3} qw(b c m p);
map{ $values{$_} = 4} qw(f h v w y);
map{ $values{$_} = 5} qw(k);
map{ $values{$_} = 8} qw(j x);
map{ $values{$_} = 10} qw(q z);
# result words from tybalt89 example
my @result_words = qw(along gall gallon goal hall halo halon hang hogan llano loan loll long);
my %scores = words_values(@result_words);
foreach my $word ( sort{ $scores{$b} <=> $scores{$a} } keys %scores ){
print "$word\tscore:\t$scores{$word}\n";
}
sub words_values{
my @words = @_;
my %scores = map {
my $word = $_;
my @chars = split '', $word;
my $score;
$score += $values{$_} for @chars;
$word => $score;
} @words;
return %scores;
}
__DATA__
hogan score: 9
hang score: 8
halon score: 8
halo score: 7
gallon score: 7
hall score: 7
along score: 6
llano score: 5
goal score: 5
gall score: 5
long score: 5
loll score: 4
loan score: 4
####
my @board = map{ [('.') x 15] } 0..14 ;
print "Empty board:\n";
foreach my $row(@board){
foreach my $col( @$row ){
print $col;
}
print "\n";
}
__DATA__
Empty board:
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
####
Board letter modifiers( just one.. ):
111311111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
111111111111111
####
my @board;
foreach my $row(0..14){
foreach my $col( 0..14 ){
$board[$row][$col] = { letter => '.', lett_mod => 1, word_mod => 1};
}
}
__DATA__
# will result in (first row)
(
[
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
{ lett_mod => 1, letter => ".", word_mod => 1 },
],
...