public void CommitGuess(int[] guess, Truth evaluation) { m_tries.Add(guess); m_possibles.Remove(guess); m_possibles.RemoveAll(possibility => !evaluation.IsEqualTo(EvaluateTruth(guess, possibility))); }
public bool IsEqualTo(Truth other) { return NumWhites == other.NumWhites && NumBlacks == other.NumBlacks; }
/// <summary> /// Evaluates the truth of the guess compared to the supplied secret /// </summary> Truth EvaluateTruth(int[] guess, int[] secret) { var evaluation = new Truth(); var rowWidth = m_rules.RowWidth; for (var i = 0; i < rowWidth; ++i) { if (guess[i] == secret[i]) { ++evaluation.NumBlacks; } else if (secret.Contains(guess[i])) { ++evaluation.NumWhites; } } return evaluation; }