public SuperSlimSwapAnalyzer(int n, bool proofFindingMode, FixerBreakerSwapMode swapMode) { _fixerResponses = new ulong[8192]; ProofFindingMode = proofFindingMode; _swapMode = swapMode; if (ProofFindingMode) { WinTreeInfo = new Dictionary <SuperSlimBoard, GameTreeInfo>(); LossTreeInfo = new Dictionary <SuperSlimBoard, GameTreeInfo>(); } }
public SuperSlimMind(Graph g, bool proofFindingMode = false, FixerBreakerSwapMode swapMode = FixerBreakerSwapMode.SingleSwap, FixerBreakeReductionMode reductionMode = FixerBreakeReductionMode.None) { G = g; BuildLineGraph(); ProofFindingMode = proofFindingMode; SwapMode = swapMode; ReductionMode = reductionMode; _coloringAnalyzer = new SuperSlimColoringAnalyzer(_lineG, GetEdgeColorList); _swapAnalyzer = new SuperSlimSwapAnalyzer(g.N, proofFindingMode, swapMode); SubFixableMind = new Lazy <SubFixableMind>(() => new SubFixableMind() { Mind = this, ForbiddenEdge = OnlyConsiderNearlyColorableBoards && MissingEdgeIndex >= 0 ? _edges[MissingEdgeIndex] : null }); MissingEdgeIndex = -1; }