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 PARIS 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.