public NeuralThinker(IEnumerable <GameStateMoveAction> moves, IEnumerable <GameStateDoubleAction> doubles, IEnumerable <GameStateResignAction> resigns, IEnumerable <GameStateTurnAction> turns) { GnuBgHintModule gnubg = new GnuBgHintModule(@"gnubg/ipoint.exe"); gnubg.Initialize(); foreach (GameStateMoveAction gsma in moves) { List <PlayHint> hints = gnubg.PlayHint(gsma.Original, 500); this.moves.Add(new KeyValuePair <GameStateAction, Vector>(gsma, ToMoveInput(gsma, hints))); } foreach (GameStateDoubleAction gsda in doubles) { DoubleResponseHint hint = gnubg.DoubleResponseHint(gsda.GameState); //Vector vector = new Vector(hint.TakeEq, hint.PassEq, System.Math.Abs(hint.PassEq - hint.TakeEq)); this.doubles.Add(new KeyValuePair <GameStateAction, Vector>(gsda, ToDoubleInput(gsda.GameState, hint))); } foreach (GameStateResignAction gsra in resigns) { ResignResponseHint hint = gnubg.ResignResponseHint(gsra.GameState); Vector vector = new Vector(); this.resigns.Add(new KeyValuePair <GameStateAction, Vector>(gsra, vector)); } foreach (GameStateTurnAction gsta in turns) { DoubleHint hint = null; if (gsta.GameState.CanDouble()) { hint = gnubg.DoubleHint(gsta.GameState); } this.turns.Add(new KeyValuePair <GameStateAction, Vector>(gsta, ToTurnInput(gsta.GameState, hint))); } random.Next(); random.Next(); }