Scrabble challenge: Difference between revisions

Content added Content deleted
imported>Jesstess
imported>Jesstess
No edit summary
Line 69: Line 69:
====Step 2: get the rack====
====Step 2: get the rack====


Write the code to get the Scrabble rack (the letters available to make words) from the command line argument passed to your script. For example if your script were called `scrabble_cheater.py`, if you ran `python scrabble_cheater.py RSTLNEI`, `RSTLNEI` would be the rack.
Write the code to get the Scrabble rack (the letters available to make words) from the command line argument passed to your script. For example if your script were called `scrabble_cheater.py`, if you ran <tt>python scrabble_cheater.py RSTLNEI</tt>, <tt>RSTLNEI</tt> would be the rack.


Handle the case where a user forgets to supply a rack; in this case, print an error message saying they need to supply some letters. Make sure you are consistent about capitalization: if your scores dictionary is lowercase, the letters supplied by the user need to be converted to lowercase at some point before you compare them.
Handle the case where a user forgets to supply a rack; in this case, print an error message saying they need to supply some letters. Make sure you are consistent about capitalization: if your scores dictionary is lowercase, the letters supplied by the user need to be converted to lowercase at some point before you compare them.
Line 87: Line 87:
====Step 3: find valid words====
====Step 3: find valid words====


Write the code to find all words from the word list that are made of letters that are a subset of the rack letters. There are many ways to do this, but here's one way that is easy to reason about and is fast enough for our purposes: go through every word in the word list, and for every letter in that word, see if that letter is contained in the rack. If it is, save the word in a valid_words list. Make sure you handle repeat letters: once a letter from the rack has been used, it can't be used again.
Write the code to find all words from the word list that are made of letters that are a subset of the rack letters. There are many ways to do this, but here's one way that is easy to reason about and is fast enough for our purposes: go through every word in the word list, and for every letter in that word, see if that letter is contained in the rack. If it is, save the word in a <tt>valid_words</tt> list. Make sure you handle repeat letters: once a letter from the rack has been used, it can't be used again.


<b>Step 3 resources</b>:
<b>Step 3 resources</b>:
Line 93: Line 93:
<li>
<li>
List manipulation: http://docs.python.org/tutorial/datastructures.html#more-on-lists.
List manipulation: http://docs.python.org/tutorial/datastructures.html#more-on-lists.
</li>
<li>
<tt>for</tt> loops: http://docs.python.org/tutorial/controlflow.html#for-statements
</li>
</li>
</ul>
</ul>
Line 107: Line 110:
</li>
</li>
</ul>
</ul>



===Checking your work===
===Checking your work===
Line 143: Line 147:
===Congratulations!===
===Congratulations!===


You've implemented a substantial, useful script in Python from scratch. Keep practicing!
You've implemented a substantial, useful script in Python from scratch that is perfect for cheating at Scrabble or Words with Friends. Keep practicing!