private void MakeMove(NumsNum move) { switch (_position.PlayerToMakeMove) { case 1: _position.FirstPlayerMoves.Add(new NumsMove { Guess = move, Count = move.GetCountFrom(_position.SecondPlayerNumber) }); if ((_position.SecondPlayerMoves.LastOrDefault() == null) || (_position.SecondPlayerMoves.Last().Count.Second != 5)) { _position.PlayerToMakeMove = 2; } break; case 2: _position.SecondPlayerMoves.Add(new NumsMove { Guess = move, Count = move.GetCountFrom(_position.FirstPlayerNumber) }); if ((_position.FirstPlayerMoves.LastOrDefault() == null) || (_position.FirstPlayerMoves.Last().Count.Second != 5)) { _position.PlayerToMakeMove = 1; } break; } }
public List <NumsNum> AnalysePosition(List <NumsMove> moves) { var result = new List <NumsNum>(); for (int i = 1234; i < 98766; i++) { if (i.IsCorrect()) { var possible = true; var iNum = new NumsNum(i); for (int j = 0; j < moves.Count; j++) { var count = iNum.GetCountFrom(new NumsNum(moves[j].Guess.Num)); if ((count.First != moves[j].Count.First) || (count.Second != moves[j].Count.Second)) { possible = false; break; } } if (possible) { result.Add(new NumsNum(i)); } } } return(result); }