Exemple #1
0
        private void Crack(Combination combination, string guess, Solution solution, List <string> possibilities)
        {
            GuessResult baseResult = combination.Try(guess);

            solution.Guesses.Add(guess);

            if (baseResult.WasRight)
            {
                solution.Answer = guess;
                return;
            }

            // I'm going to modify the collection, with that in mind we won't use
            // a foreach loop.
            for (int i = 0; i < possibilities.Count; i++)
            {
                GuessResult result = combination.Try(guess, possibilities[i]);

                if (!result.Equals(baseResult))
                {
                    possibilities.Remove(possibilities[i]);
                    i--;
                }
            }
        }