Example #1
0
        private static IEnumerable<BobDecisionTree> AllDecisionsFromHere(BoardState board, BoardMark whosTurn, int decisionsCount)
        {
            IEnumerable<int> positions2Go = new BoardSymmetry(board).GetFreeUniquePositions();
            if (CanOptimizeTreeBuilding(decisionsCount, positions2Go))
            {
                positions2Go = positions2Go.AsParallel();
            }

            return positions2Go
                .Select(p => new { NewBoard = board.Set(p, whosTurn), Position = p })
                .Select(p => new BobDecisionTree(p.NewBoard, whosTurn.OpponentsMark(), p.Position, decisionsCount + 1))
                .ToArray();
        }
Example #2
0
 public double GetWinFactor(BoardMark whosTurn)
 {
     return WinForecast(whosTurn, 0) - WinForecast(whosTurn.OpponentsMark(), 1);
 }