...because they are too difficult to type with one hand.
icicle, oxidize, panels, soaped, coaxial, dispels,
gospels, spatial, clamps, dispel, elapse, gospel,
pajama, palely, panama, lapels, and social.
YuckFoo
#!/usr/bin/perl
use strict;
my ($DICT, $MIN) = qw(/usr/dict/words 6);
my (%rows, %cols);
my ($word, $score);
addhash(0, \%rows, \%cols, 'qwertyuiop');
addhash(1, \%rows, \%cols, 'asdfghjkl');
addhash(2, \%rows, \%cols, 'zxcvbnm');
if (!open (IN, $DICT)) {
print STDERR "\nError opening file: $DICT\n\n"; exit;
}
while (chomp ($word = <IN>)) {
if (length($word) >= $MIN && $word !~ m{[A-Z]}) {
$score = score(\%rows, \%cols, $word);
printf (STDOUT "%4.2f $word\n", $score);
}
}
#-----------------------------------------------------------
sub score {
my ($rows, $cols, $str) = @_;
my ($tot, $ch);
my ($r, $c, $lr, $lc);
for $ch (split('', $str)) {
if ($lr eq '') {
($lr, $lc) = ($rows->{$ch}, $cols->{$ch});
}
else {
($r, $c) = ($rows->{$ch}, $cols->{$ch});
$tot += abs($lr - $r) + abs($lc - $c);
($lr, $lc) = ($r, $c);
}
}
return ($tot / (length($str) - 1));
}
#-----------------------------------------------------------
sub addhash {
my ($row, $rows, $cols, $str) = @_;
my ($i, $ch);
for $ch (split('', $str)) {
($rows->{$ch}, $cols->{$ch}) = ($row, $i++);
}
}