public override GuessResult ProcessGuess(PegPattern guess) { var positionCount = Shell.PromptInt("Number of pegs in correct position", 0, (0, guess.Size)); var colorCount = (guess.Size - positionCount > 1) ? Shell.PromptInt("Number of pegs in wrong position", 0, (0, guess.Size - positionCount)) : 0; return(new GuessResult(positionCount, colorCount)); }
public override PegPattern BuildInitialGuess() { GenerateAvailableGuesses(); if (_initialGuess != null) { LastGuess = _initialGuess; } else if (Options.AllowDuplicates) { var left = Options.Size / 2; var right = Options.Size - left; var pegs = Options.Palette.GetPegs(); LastGuess = new PegPattern(Options.Palette, Enumerable.Repeat(pegs[0], left).Concat(Enumerable.Repeat(pegs[1], right)).ToList()); } else { LastGuess = new PegPattern(Options.Palette, Options.Palette.GetPegs().Take(Options.Size).ToList()); } return(LastGuess); }
public ComputerCodebreaker(IGameOptions options, PegPattern initialGuess = null) : base(options) { _initialGuess = initialGuess; }
public ComputerCodemaker(IGameOptions options) : base(options) { _code = Options.Palette.GetRandomPattern(Options); }
public override GuessResult ProcessGuess(PegPattern guess) { return(guess.CompareTo(_code)); }
public ComputerCodemaker(IGameOptions options, PegPattern code) : base(options) { _code = code ?? throw new ArgumentNullException(nameof(code)); }
public abstract GuessResult ProcessGuess(PegPattern guess);