Skip to content

QSchulz/MostValuableCombinationInScrabbleLikeHand

Repository files navigation

#Most Valuable Combination In Scrabble-like Hand

Given a "hand" of letters, a dictionary and the value of each letter, the problem is to find the combination of words making the highest score. (@see Subject.pdf or Subject part at the end of the README.md)

####Authors: Johann NOVAK (johann.novak@utbm.fr)
Nathan OLFF (nathan.olff@utbm.fr)
Donatien RABILLER (donatien.rabiller@utbm.fr)
Quentin SCHULZ (quentin.schulz@utbm.fr)

####Usage:

  • Continue the project

Clone the repository and directly import it in your favorite IDE (it was developed thanks to Eclipse, so it will work also with NetBeans).

  • Take a look at the project

Download the .jar and all images at the root of this project and run it on your computer (the safest way to run the project is to import it in your IDE and export it to a .jar file instead of downloading it).

Files needed

  • enable1.txt which is the file containing the whole dictionary (currently roughly 173.000 words)
  • hand which is the file containing the letters in your "hand"
  • lettersvalues.txt which is the file containing the value for each letter in the alphabet

Next, set the .jar file executable: chmod +x MostValuableCombinationInScrabbleLikeHand.jar
Then run it with: java -jar MostValuableCombinationInScrabbleLikeHand.jar
It will run during 2min and return the result in a file named result.txt
The result is formatted as following:

  • Each word of the combination takes one line.
  • Score of the word.

#####Changelog

v0.1 - 2014-02-23 Initial release.

###Subject (@see Subject.pdf)

Given a “hand” of letters, a dictionary and the value of each letter. The problem is to find the combination of words making the highest score.
A hand is composed of more than 10 lowercase ascii letters ( an average number would be 100 but we would increase this number in case of a draw between two teams )
The dictionary will be a file containing one word per line. ( roughly 90 000 words )
The different values (one for each letter) will be given in the file « lettersvalue », each line will contain a pair of the following form form :
z34
example:
a1
b2
c4

Using all the letter you can in your hand and only words present in the dictionary, You will therefore have to form the combination of words making the highest score you can
As an example :
Given the dictionnary : « I am a poney hey» the hand : « zeyhdgtriopn» and the letter values
The highest combination is : “I poney” with a score of 16
The combination “I hey” is also possible but would only score 11 points

Authorized programming languages are: C/C++, Java, Python
The program should run on linux (no .net funtions).
For C/C++ developpers, provide you sources along with a makefile.
The runnable should be called solution.bin

Inputs :
­- « lettervalue.txt » : contains the value of each letter .It will be composed of 26 lines, with the form a2 (lettervalue)
­- « enable1.txt » : contains the whole dictionary with one word per line.
­- « hand » contains one line the letters

Ouputs : The output should be written to the file solution which will contain every word of the best combination you found with one word per line
exemple:
I
poney

Releases

No releases published

Packages

No packages published

Languages