public bool NewCode() { _codes.RemoveAll(pred => pred.CookieId == GetCookieById(CookieKeys.RngId)); CodebreakerCode newCode = new CodebreakerCode(GetCookieById(CookieKeys.RngId), _rng); _codes.Add(newCode); return(true); }
public object GetFeedback() { List <ReturnScore> rScores = new List <ReturnScore>(); List <string> guesses = new List <string>(); CodebreakerCode code = GetCode(); return(new { rScores = code.RScores.ToArray() }); }
public ReturnScore MakeGuess(string guess) { var guessPieces = guess.ToCharArray(); var nums = new List <int>(); foreach (char s in guessPieces) { nums.Add(s - 49); } int[] pegs = nums.ToArray(); if (pegs.Length != 4) { throw new ArgumentException("There may be only be 4 pegs submitted to CheckCode"); } foreach (var peg in pegs) { if (peg < 0 || peg > 7) { throw new ArgumentException("Wrong peg value, peg values may only be 0 through 7"); } } CodebreakerCode code = GetCode(); if (code == null) { NewCode(); code = GetCode(); } // compare the guess and actual code ReturnScore rScore = new ReturnScore(guess, 0, 0); // count bulls for (int i = 0; i < pegs.Length; i++) { if (pegs[i] == code.Code[i]) { rScore.Bulls++; } } // count cows for (int i = 0; i < 8; i++) { var count1 = pegs.Count(checkMe => { return(checkMe == i); }); var count2 = code.Code.Count(checkMe => { return(checkMe == i); }); var countOfCowsForOneColor = Math.Min( count1, count2 ); rScore.Cows += countOfCowsForOneColor; } rScore.Cows -= rScore.Bulls; code.RScores.Add(rScore); // if correctly guessed, generate new code if (rScore.Bulls == 4) { NewCode(); } return(rScore); }