All,
I am writing a
Lingo-ish game for my mother. One of the problems I am having is designing a computer opponent. The trouble is that I want the difficulty to be configurable. For those unfamiliar, here is a brief description of the game:
The game starts with a secret word of a fixed number of letters with only the first letter known. A player guesses a word. Provided the guessed word is within the rules, each letter falls into 1 of 3 categories:
- Letter is not in the target word
- Letter is in target word but in a different position
- Letter is in target word and correct position
This information is presented visually (usually with colors) and previous guesses are displayed so all known information about the target word is available for subsequent guesses.
While I am still working out the exact rules I intend to use, there are 4 types of guesses:
- Perfect - target word is guessed
- Good - new information about target word is acquired
- Bad - no new information is acquired
- Worst - turn is lost
Some good guesses are better than other good guesses depending on how much new information they reveal. What I need help with is making a guessing algorithm that can be better or worse depending on configuration. Here are the factors that can go into making a guess:
- Time taken to guess (faster = more points)
- Guesses resulting in loss of turn
- Mispelled word
- Previously guessed word
- Incorrect number of letters
- Does not begin with provided first letter
- Not within given time limit
- Known vocabulary
- Use (or non-use) of available information
- Letters known NOT to be in target word
- Letters in target word but misplaced
- Letters in target word and correct position
Your challenge, if you choose to accept it, is to design an algorithm that can take the above factors into consideration to make a configurable computer opponent. While I would hope for something better than just "Easy, Medium, Hard", I will be very appreciative of anything I can get.
I have explained more about the game play here.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.