private boolean guessDoesNotMatch(Color[] guess) { return !guessMatch(guess); }
/** * Create a new Row object that contains a guess that matches all guesses and the * responses to them that are on the table. * * @return the new Row to be added to the table along with the feedback afterwards. */ public Guess guess() { Guess guess = nextGuess(); while (guess != Guess.none && guessDoesNotMatch(guess)) { guess = nextGuess(); } return guess; }
/** * get the next guess, without checking any matching * * @return the next guess */ protected Color[] nextGuess() { if (lastGuess[0] == null) { setFirstGuess(); return lastGuess; } else { return nextNonFirstGuess(); } }
@Test public void keepsGettingTillItBleedsOut(){ int numberOfGuesses = 0; ColorManager manager = new ColorManager(NR_COLORS); Table table = new Table(NR_COLUMNS, manager); Guesser guesser = new UniqueGuesser(table); while (guesser.guess() != Row.none) { numberOfGuesses++; } } }
public Guesser(Table table) { this.table = table; this.manager = table.manager; nextGuess = firstGuess(); }
@Test public void keepsGettingTillItBleedsOut() { int numberOfGuesses = 0; ColorManager manager = new ColorManager(NR_COLORS, Color::new); Table table = new Table(NR_COLUMNS, manager); Guesser guesser = new UniqueGuesser(table); while (guesser.guess() != Guess.none) { numberOfGuesses++; } } }
/** * Create a new Row object that contains a guess that matches all guesses and the * responses to them that are on the table. * * @return the new Row to be added to the table along with the feedback afterwards. */ public Row guess() { Color[] guess = nextGuess(); while (guess != none && guessDoesNotMatch(guess)) { guess = nextGuess(); } if (guess == none) { return Row.none; } else { return new Row(guess); } }
private boolean guessDoesNotMatch(Guess guess) { return !guessMatch(guess); }
@Test public void testSimpleGame() { Table table = new Table(NR_COLUMNS, manager); Guess secret = createSecret(); System.out.println(PrettyPrintRow.pprint(new Row(secret, 4, 0))); System.out.println(); Game game = new Game(table, secret); Guesser guesser = new UniqueGuesser(table); while (!game.isFinished()) { Guess guess = guesser.guess(); if (guess == Guess.none) { Assert.fail(); } Row row = game.addNewGuess(guess); System.out.println(PrettyPrintRow.pprint(row)); } } }
@Test public void generateAllGuesses() { int numberOfGuesses = 0; Table table = new Table(NR_COLUMNS, manager); Guesser guesser = new UniqueGuesser(table); while (guesser.nextGuess() != Guess.none) { numberOfGuesses++; } Assert.assertEquals(6 * 5 * 4 * 3, numberOfGuesses); }
public String playParallel() { Table table = new Table(NR_COLUMNS, manager); Guess secret = createSecret(); println(PrettyPrintRow.pprint(new Row(secret, NR_COLUMNS, 0))); println(); Game game = new Game(table, secret); final IntervalGuesser[] guessers = createGuessers(table); startAsynchronousGuessers(guessers); final Guesser finalCheckGuesser = new UniqueGuesser(table); int serial = 1; try { while (!game.isFinished()) { final Guess guess = guessQueue.take(); if (finalCheckGuesser.guessMatch(guess)) { if (guess == Guess.none) { Assert.fail(); } Row row = game.addNewGuess(guess); print("" + serial + ". "); serial++; println(PrettyPrintRow.pprint(row)); } } } catch (InterruptedException ie) { } finally { stopAsynchronousGuessers(guessers); } return out; }
@Test public void testSimpleGame() { Table table = new Table(nrColumns, manager); Color[] secret = createSecret(); System.out.println(PrettyPrintRow.pprint(new Row(secret))); System.out.println(); Game game = new Game(table, secret); Guesser guesser = new UniqueGuesser(table); while (!game.isFinished()) { Row guess = guesser.guess(); if (guess == Row.none) { Assert.fail(); } game.addNewGuess(guess); System.out.println(PrettyPrintRow.pprint(guess)); } } }
@Test public void generateAllGuesses() { int numberOfGuesses = 0; ColorManager manager = new ColorManager(NR_COLORS); Table table = new Table(NR_COLUMNS,manager); Guesser guesser = new GeneralGuesser(table); while (guesser.nextGuess() != Guesser.none) { numberOfGuesses++; } Assert.assertEquals(6*6*6*6,numberOfGuesses); } }
@Test public void generateAllGuesses() { int numberOfGuesses = 0; ColorManager manager = new ColorManager(NR_COLORS, Color::new); Table table = new Table(NR_COLUMNS, manager); Guesser guesser = new GeneralGuesser(table); while (guesser.nextGuess() != Guess.none) { numberOfGuesses++; } Assert.assertEquals(6 * 6 * 6 * 6, numberOfGuesses); } }
@Test public void generateAllGuesses() { int numberOfGuesses = 0; ColorManager manager = new ColorManager(NR_COLORS); Table table = new Table(NR_COLUMNS, manager); Guesser guesser = new UniqueGuesser(table); while (guesser.nextGuess() != Guesser.none) { numberOfGuesses++; } Assert.assertEquals(6 * 5 * 4 * 3, numberOfGuesses); }