import java.io.*; public class MastermindPlayDS1 { public static void main( String[] args ) throws IOException { BufferedReader rdr = new BufferedReader( new InputStreamReader( System.in )); String str = null; BoardDS1 board = new BoardDS1(); int[] response = new int[2]; while (response[0] != BoardDS1.NUM_SLOTS) { System.out.print( "Enter guess: " ); str = rdr.readLine(); board.evaluate( str.toCharArray(), response ); System.out.println( " " + response[0] + ' ' + response[1] ); } } } class BoardDS1 { public static final int NUM_CHOICES = 6; public static final int NUM_SLOTS = 4; private char[] answer = new char[NUM_SLOTS]; private boolean[] answerUsed = new boolean[NUM_SLOTS]; private boolean[] guessUsed = new boolean[NUM_SLOTS]; private int[] answerChars = new int[NUM_CHOICES]; private int[] guessChars = new int[NUM_CHOICES]; public BoardDS1() { // populate answer array with random characters for (int i=0; i < NUM_SLOTS; i++) answer[i] = (char) ('a' + (int) (Math.random()*1000) % NUM_CHOICES); for (int i=0; i < NUM_SLOTS; i++) answerChars[ answer[i] - 'a' ]++; } public void evaluate( char[] guess, int[] response ) { response[0] = response[1] = 0; // initialize boolean arrays for (int i=0; i < NUM_SLOTS; i++) guessUsed[i] = answerUsed[i] = false; // compute black answer for (int i=0; i < NUM_SLOTS; i++) if (guess[i] == answer[i]) { response[0]++; guessUsed[i] = answerUsed[i] = true; } // compute white answer for (int i=0; i < NUM_SLOTS; i++) if ( ! guessUsed[i]) for (int j=0; j < NUM_SLOTS; j++) if ( ! answerUsed[j]) if (guess[i] == answer[j]) { response[1]++; guessUsed[i] = answerUsed[j] = true; break; } } }