Problem 3082. Scrabble Scores - 10
This problem is very similar to the previous problem. Here, you are provided a letter of an existing word on the board from which you will play a word. The letter can reside anywhere (first to last) within the word you are playing. Write a function to find the highest scoring word, provided the letter you are building off of and the letters on your tray.
Rather than having to test all the possible permutations against a dictionary, you will be provided a cell array of strings containing all possible words based on the starting letter and the letters on your tray. In addition to providing the highest score, also provide the word(s) that achieve that score in a cell array. See the test suite for examples. Due to high-scoring tiles, the highest score may not be achieved by the longest word(s).
Related problems:
Previous problem: 9 - Word score optimization (fixed first letter). Next problem: 11 - Word score optimization (known letter) & multipliers.
Solution Stats
Problem Comments
-
7 Comments
Hello Grant, I'm afraid that in the testsuite only a list of valid words is passed as an argument to the function. Anyway, it is a very nice series! I'm waiting for more. (Yes, I do like Scrabble. I hope there will be Super Scrabble edition in my mother tongue one day :))
yes, please add the second argument (the desired letter within the target words) to the function calls...
Alfonso, I've added the desired letter to the function call, though it is not required to solve the problem (which is why it was originally not present).
Jan, thanks for the comment. What is your native language?
I understand the concern with the pre-compiled word list. If Matlab had a built-in dictionary, I would use it. Unfortunately, I could only find two dictionary routines on the file exchange, one of which opens Microsoft Word to use its spell checker and the other opens a Java-based interface to query words against an open-source website. I figure that these Scrabble problems would become too complicated with such add-ons, so I decided to pre-compile the word lists, which contain a few hundred words. While the solution to the last two problems may seem trivial, the next one, involving multipliers, is more complicated (and not trivial). By the way, I got locked out of Cody when originally posting this problem because the test suite apparently has a character limit (the word lists and test cases were originally quite a bit larger). Thanks to Ned for getting my account back to normal.
Grant, Your dictionary is ok. I was trying to say the same thing as Alfonso, but I did it in "hard to read" way. At first I thought that there are some words on the list that have more points than max_score but doesn't have required letter inside.
"11th" was great, waiting for "Scrabble Scores - 12"! :-D My mother tongue is Polish, but I have also magnetic version of pocket Scrabble in English!
I'll get to the next problem soon. Now, I understand your comments. Incidentally, for almost all of the test cases, the existing letter made it through to the highest-scoring word. I have updated the test suite so that the existing letter is now accounted for. Thanks for the catch.
Solution Comments
Show commentsProblem Recent Solvers24
Suggested Problems
-
Make the vector [1 2 3 4 5 6 7 8 9 10]
49317 Solvers
-
Replace NaNs with the number that appears to its left in the row.
2975 Solvers
-
Return the first and last characters of a character array
9918 Solvers
-
Given a matrix, swap the 2nd & 3rd columns
1072 Solvers
-
1892 Solvers
More from this Author139
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!