public SafetyMap(GoBoard goBoard, SafetySolverType pSafetySolverType) { Board = goBoard; Safety = new SafetyStatus[Board.Coord.BoardArea]; SafetySolverType = pSafetySolverType; Execute(); }
public GoBoard(GoBoard goBoard, bool includeUndo) { Coord = CoordinateSystem.GetCoordinateSystem(goBoard.BoardSize); SafetySolver = goBoard.SafetySolver; Komi = goBoard.Komi; Clear(); foreach (KeyValuePair<Color, int> lMove in goBoard.MoveList) PlayStone(lMove.Value, lMove.Key, includeUndo); }
public static SafetySolverType ToType(string name) { SafetySolverType lSafetySolverType = SafetySolverType.Unassigned; if (!Instance.Dictionary.TryGetValue(name.Trim().ToLower(), out lSafetySolverType)) { return(SafetySolverType.Unassigned); } return(lSafetySolverType); }
public GoBoard(GoBoard goBoard, bool includeUndo) { Coord = CoordinateSystem.GetCoordinateSystem(goBoard.BoardSize); SafetySolver = goBoard.SafetySolver; Komi = goBoard.Komi; Clear(); foreach (KeyValuePair <Color, int> lMove in goBoard.MoveList) { PlayStone(lMove.Value, lMove.Key, includeUndo); } }
public int CountSafePoints(Color color, SafetySolverType pSafetySolverType) { if ((SafetyStatusMap != null) && (SafetyStatusMap.SafetySolverType == pSafetySolverType)) { CreateEnclosedRegions(); return(SafetyStatusMap.CountSafePoints(color)); } else { ColorEnclosedRegions lColorEnclosedRegions = ColorEnclosedRegions; ColorEnclosedRegions = null; CreateEnclosedRegions(); SafetyMap lSafetyStatusMap = new SafetyMap(this, pSafetySolverType); ColorEnclosedRegions = lColorEnclosedRegions; return(lSafetyStatusMap.CountSafePoints(color)); } }
public static ISafetySolverInterface CreateFactory(SafetySolverType safetySolverType) { switch (safetySolverType) { case SafetySolverType.Benson: return(new SolverBenson()); case SafetySolverType.Muller97: return(new SolverMuller(1997)); case SafetySolverType.Muller04: return(new SolverMuller(2004)); case SafetySolverType.Muller97Plus: return(new SolverExtended(SafetySolverType.Muller97)); case SafetySolverType.Muller04Plus: return(new SolverExtended(SafetySolverType.Muller04)); case SafetySolverType.BensonPlus: return(new SolverExtended(SafetySolverType.Benson)); default: return(new SolverNull()); } }
public void SetSafetySolver(SafetySolverType pSafetySolverType) { SafetySolver = pSafetySolverType; SafetyStatusMap = null; ColorEnclosedRegions = null; }
public GoBoard(int boardSize) { Coord = CoordinateSystem.GetCoordinateSystem(boardSize); SafetySolver = SafetySolverType.Muller04; Clear(); }
protected void Add(string typeName, SafetySolverType solverType) { Dictionary.Add(typeName, solverType); }
public int CountSafePoints(Color color, SafetySolverType pSafetySolverType) { if ((SafetyStatusMap != null) && (SafetyStatusMap.SafetySolverType == pSafetySolverType)) { CreateEnclosedRegions(); return SafetyStatusMap.CountSafePoints(color); } else { ColorEnclosedRegions lColorEnclosedRegions = ColorEnclosedRegions; ColorEnclosedRegions = null; CreateEnclosedRegions(); SafetyMap lSafetyStatusMap = new SafetyMap(this, pSafetySolverType); ColorEnclosedRegions = lColorEnclosedRegions; return lSafetyStatusMap.CountSafePoints(color); } }
public static int CZD() { GameRecords lGameRecords = new GameRecords(); lGameRecords.Load(@"Regression\CZD\Source", @"CZD_*.sgf", true); Dictionary <SafetyStatus, int> lSafetyUsage = new Dictionary <SafetyStatus, int>(); foreach (GameRecord lGameRecord in lGameRecords.Games) { GoBoard lGoBoard = new GoBoard(19); GameRecordBoardAdapter.Apply(lGameRecord, lGoBoard); //lGameRecord.Apply(lGoBoard); foreach (GoCell lCell in lGoBoard.Cells) { SafetyStatus lSafetyStatus = lGoBoard.GetSafetyStatus(lCell.Index); if (lSafetyUsage.ContainsKey(lSafetyStatus)) { lSafetyUsage[lSafetyStatus] += 1; } else { lSafetyUsage[lSafetyStatus] = 1; } } Console.Write("."); } Console.WriteLine(); foreach (SafetyStatus lSafetyStatus in lSafetyUsage.Keys) { Console.Write(lSafetyStatus.ToInteger()); Console.Write(" | {0}", lSafetyStatus); Console.WriteLine(" | " + lSafetyUsage[lSafetyStatus].ToString()); } MemFile lMemFile = new MemFile(); lMemFile.WriteLine(lGameRecords.ToString()); lMemFile.SaveFile(@"Regression\CZD\CZD-combined.sgf"); SafetySolverType lSafetySolverType = SafetySolverType.Muller04; for (int i = 0; i < lGameRecords.Games.Count; i++) { GoBoard lGoBoard = new GoBoard(19); GameRecordBoardAdapter.Apply(lGameRecords[i], lGoBoard); //lGameRecords[i].Apply(lGoBoard); GameRecordBoardAdapter.UpdateTerritory(lGameRecords[i], lGoBoard); //lGameRecords[i].UpdateTerritory(lGoBoard); //Console.WriteLine(lGoBoard.ToString()); Console.Write(i.ToString()); Console.Write(" : "); Console.Write(lGoBoard.CountSafePoints(Color.Both, lSafetySolverType).ToString()); Console.Write(" "); Console.Write(lGoBoard.CountSafePoints(Color.Black, lSafetySolverType).ToString()); Console.Write(" "); Console.WriteLine(lGoBoard.CountSafePoints(Color.White, lSafetySolverType).ToString()); } for (int i = 0; i < lGameRecords.Games.Count; i++) { MemFile lMemFile2 = new MemFile(); lMemFile2.WriteLine(lGameRecords[i].ToString()); lMemFile2.SaveFile(@"Regression\CZD\" + lGameRecords[i].GameName.Insert(3, "-") + ".sgf"); } return(0); }
public SolverExtended(SafetySolverType safetySolverType) { SafetySolverType = safetySolverType; SafetySolver = SafetySolverFactory.CreateFactory(safetySolverType); }
public static ISafetySolverInterface CreateFactory(SafetySolverType safetySolverType) { switch (safetySolverType) { case SafetySolverType.Benson: return new SolverBenson(); case SafetySolverType.Muller97: return new SolverMuller(1997); case SafetySolverType.Muller04: return new SolverMuller(2004); case SafetySolverType.Muller97Plus: return new SolverExtended(SafetySolverType.Muller97); case SafetySolverType.Muller04Plus: return new SolverExtended(SafetySolverType.Muller04); case SafetySolverType.BensonPlus: return new SolverExtended(SafetySolverType.Benson); default: return new SolverNull(); } }