There is, here in the UK, a daily game show on television called Countdown. It's on in the early afternoon five days a week, is enormously
popular, and has been running since 1982. It's a words and numbers game, featuring two contestants. It features two games: in the numbers
game the contestant asks for a combination of 6 numbers, large or small. Large numbers are 25, 50, 75 or 100, and small numbers are single
digits excluding zero. I think the most common choice is probably two large and four small. The contestants then get 30 seconds to combine
the six numbers, using plus, minus, divide and multiply in order to reach a random 3 digit number which they will be given. No natural logarithms please!
But it's the other game which concerns us here, the word game. Contestants ask for 9 letters chosen at random from piles of cards, asking,
each time, for a vowel or a consonant. They then get 30 seconds to come up with their best word using any or all of the letters. Clearly,
a 9 letter word is the ultimate goal, but most players seem to manage 6 or 7 letters.
Can you suggest a programming strategy to play the word game? The foundation is that you have a plain text file containing about 180,000 7, 8, and 9 letter words. They are not necessarily in alphabetical order. The program will ask the user to input 9 random letters and then list all the 9, 8 and 7 letter words it can find in the text file.
These are the issues to think about:
For your information
I have written a solution to this, using Python, though I'm not confining you to this language. Use anything
you like; I'm only interested in the how, not the code. Pseudocode, if you like. Some screenshots of my Python program running:
The opening screen. I've just input 'regesnate'
which I know will result in some decent hits
I hit enter, and here is the result.
And yes, as you can see, there are some proper nouns there - a
nono in the real Countdown, but that's unimportant in this
exercise. It's the logic we care about.
But, most importantly of all, I'm very proud
to show you what appears last on the screen. That's just over a second.
This was run on my iMac with Intel Core i5. The same program
on my Linux Core i7 laptop runs about one third quicker. The timing
is quite closely consistent regardless of the nine letters and the hit count
So that is your challenge. From an unordered list of words find all the 7, 8 and 9 letter hits, ideally in around a second.
Of course I would be most interested to hear your solutions or comments. alansworld {at} gmail.com will get me.
SPOILER ALERT SPOILER ALERT
On the next page I'll give hints to some absolutely crucial requirements for making this work.
If you want to work on the problem yourself then DON'T click here ->>>Hints hints hints