LINGO
Problem
A
game requires players to deduce a five letter word based on hints obtained by
guessing other five letter words. The way the game is played is as follows: a
secret five letter word is selected. The object of the game is for the player to
guess the secret word. The first letter of the secret word is revealed. The
player will then guess a five letter word that may match the secret word. A
computer then provides feedback to the player on the accuracy of the guess.
Feedback consists of a report indicating if any letters in the guessed word are
correct and in the same position in the secret word, if any letters in
the guessed word are correct but not in the correct position in the
secret word, and any letters in the guessed word that do not appear in
the secret word.
As
an example, the secret word is: “HELLO”. The player is told the first letter of
the word is “H”. The player then guesses what the word could be, knowing it
begins with the letter “H”. Let’s say the player guesses the word: “HOLES”. The computer would
report that the “H” and “L” are in the secret word and in the correct position.
In addition, the “O” and “E” are in the secret word, but in the incorrect
position, and the “S” is not in the secret word. This is conveyed to the player
by a single line report:
HoLe.
The
upper case letters (“H” and “L”) indicate correct letter and position. The
lower case letters (“o” and “e”) indicate correct letter, wrong position. The
period (“.”) indicates a wrong letter (not in the secret word). You will write
a program that evaluates the player guesses, and prints out the single line
report for each guess. If the player guesses the secret word exactly, then the
five capital letters of the secret word will be displayed in the report.
Input
The
input data file is named lingo.txt
and consists of datasets for one or more games. A blank line marks the
beginning of the next dataset (game). The line after the blank line contains
the secret word. The remaining lines in the dataset represent the player’s
guesses; there may be too few or too many guesses than are necessary to guess
the secret word. The secret word will contain exactly five upper case letters.
The player’s guesses, however, have to be checked for the correct length: valid
guesses consist of exactly five letters. You may assume that all input is
upper-case letters. Input is terminated by a dataset with the secret word: “LINGO”
(that is, game play is stopped at that point, the program terminates, and no
further guessing occurs). Name your program Lingoxxx.java where the
"xxx" is your user name.
Output
Each
game’s output should be preceded by a single blank line (except for the
terminating case). The first single line status report should be printed, which
consists of the first letter of the secret word, followed by four periods. For
each guess, print the single line status report for that guess. For an invalid
guess, repeat the previous single line status report. If the guess exactly
matches the secret word, that game ends and you should move on to the next one.
The player may guess a maximum of six times; after the sixth guess, if the
player did not guess the secret word, or you run out of guesses (the player
gives up) print out the secret word in lower case letters and move on to the
next game.
Useful information
Look
up the StringBuffer
class. Check out the charAt
and setCharAt
methods.
Example
Input HELLO HOLES HAPPY HELMS HELLO HELPS PARTY PARKS PARES PONDER PATTY PUNTS PARTY HELIX HELIX HELIX LINGO |
Output H.... HoLe. H.... HEL.. HELLO P.... PAR.. PAR.. PAR.. PAR.. PA.TY Party H.... H.... HELIX |
Comment Start game Player guesses word Disregard – game is over Start game Invalid guess – too long. Ignore Last guess (#6). Print answer Disregard End of input file. |