Reference no: EM13161398
The board game Scrabble works by assigning points to wooden tiles that are marked with printed letters, and are arranged as interlocking words on a Scrabble board. It's described here: Scrabble.
We'll simplify this considerably, and consider the following question. We begin with the letter-scoring scheme from Scrabble:
a = 1, b = 3, c = 3, d = 2, ..., z = 10.
Given a text file - a novel for example, what is the token in the file with the highest scoring density? Token density is calculated as follows: First, letters are assigned their scrabble score. All non-letters (e.g., period, comma, etc.) have score 0. A token's density equals the sum of the scrabble values of its characters, divided by the length of the token.
Some examples:
Token Score
cab 7/3 = 2.33 (note: standard division, not Java integer division)
cab! 7/4 = 1.75 (token length is now 4, '!' has value 0)
zzz 30/3 = 10.0
Your solution should be in two classes, a driver class called DenseScrabbleTester, which includes main and uses Scanner to identify an external file for dense Scrabble study, and a class calledDenseScrabble, which does the heavy lifting for the application. The DenseScrabble class must extend Echo, in the way we've indicated in Chapter 10. Submit the code for these two classes in the boxes below.
Output: your program should report the (or a) highest density token in the input file, along with the density value for that token, and the line number in the file the token appeared on.
Tips:
Make sure you master Chapter 10 of the text as a prelude to doing this problem.
Here is a list from a to z of the letter scores from Scrabble:
{1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10}
Notice that this list is in proper format for copying and pasting directly into your program as an int array.
It's far easier to convert lines of text to lowercase before processing.
If you're not sure how to extract letter scores from the scrabble value array, above, you should view the short movie embedded in section 7.1 in the text.
Use the StringTokenizer constructor with just one argument (so the only delimiter is white space - punctuation should figure in the token density calculation, as it does in the "cab!" example above).
You MUST use a try-catch harness in the driver class.
You MUST comment every method with a one line description of the job that method does, and your description must be placed just below the method header line.
Some sample output:
enter file name
sampletext.txt
winner: now score 2.0 Line number: 1
-------------------------------
enter file name
HeartOfDarkness.txt
winner: buzz score 6.0 Line number: 759