Example #1
0
        public void CommitGuess(int[] guess, Truth evaluation)
        {
            m_tries.Add(guess);

            m_possibles.Remove(guess);
            m_possibles.RemoveAll(possibility => !evaluation.IsEqualTo(EvaluateTruth(guess, possibility)));
        }
Example #2
0
 public bool IsEqualTo(Truth other)
 {
     return NumWhites == other.NumWhites && NumBlacks == other.NumBlacks;
 }
Example #3
0
        /// <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;
        }