I had a few minutes so I wrote a perl script that searches the twl98 (scrabble) dictionary I downloaded from www.isc.ro and prints the highest scoring words. It doesn't include all words, of course, and some of the words in this dictionary may not be in others. Still, I ran it against your scoring criteria and the ones you guys came up with were pretty good.

I won't spoil the fun, but there were a few words that totalled higher than 85.

k


# search through the dictionary twl98.txt for scrabble
# to find words that score more than a certain number of points
# based on the scoring in the file lettercost.txt


$LIMIT = 85; # only display words meeting this criterion.
$numArgs = $#ARGV + 1;


# get name of letter cost file.
# currently only works for: lettercost.txt
#
if ($numArgs > 0) {
$fileName = $ARGV[0];

} else {
printf "Enter name of cost file: ";
$fileName = <>;
}

# parse the letter scoring data into a $cost{} hash.
#
open (FIL, "$fileName" ) || die "Unable to open file $fileName\n";
$lineCount = 0;
while (<FIL>) {
chop;
$lineCount++;
$line = $_;
$line =~ s/\s+$//;
$line =~ y/a-z/A-Z/;
if (length($line) > 0 ) {
($num, $let1, $let2) = split(" ", $line);
$num += 0;
$let1 =~ s/,$//;
$cost{$let1} = $num;
$cost{$let2} = $num;
} else {
# do nothing.
}
}

close (FIL);


# read the dictionary
#
$dictionary = "twl98.txt";
open (DICT, "$dictionary") || die "Unable to the find the dictionary $dictionary\n";
while ( <DICT> ) {
$word = <DICT>; # read a line
$word =~ s/\n$//; # ditch the end of line character
$word =~ y/a-z/A-Z/; # convert to upper case.
if (length($word) >= 7 ) { #only use words > 7 chars
$sum = &costOf($word);
$sum -= 10 * (length($word) - 7); # -10 for each letter over 7.
$usum = $sum + &unique($word); # unique letter bonus
if ($sum >= $LIMIT || $usum >= $LIMIT) {
print "$word $sum $usum\n";
}
}
}
close(DICT);

sub costOf {
local ($word) = @_;
local ($i, $letter);
local ($answer, $sum);

$sum = 0;
for ($i = 0; $i< length($word); $i++) {
$letter = substr($word, $i, 1);
$sum += $cost{$letter};
}
$answer = $sum;
}

sub unique {
local($w) = @_;
local ($i, $j);
local ($unq);
local ($letteri, $letterj);
local ($answer);

$unq = 15;
for ($i=0; $i < length($w)-1; $i++)
{
for ($j = $i+1; $j < length($w); $j++)
{
$letteri = substr($w, $i,1);
$letterj = substr($w, $j,1);
if ($letteri eq $letterj) {
$unq = 0;
}
}
}
$answer = $unq;
}