Ejemplo n.º 1
0
 public Solution OneAttractor(ISet<int> target)
 {
     var currentSolution = new Solution(target, new PositionalStrategy());
     var nextSolution = this.CPreOne(currentSolution.getWinningRegion());
     while (!nextSolution.getWinningRegion().IsSubsetOf(currentSolution.getWinningRegion()))
     {
         currentSolution = currentSolution.Extend(nextSolution);
         nextSolution = CPreOne(currentSolution.getWinningRegion());
     }
     return currentSolution;
 }
Ejemplo n.º 2
0
 public Solution Extend(Solution other)
 {
     ISet<int> newWinningRegion = new HashSet<int>(this.winningRegion);
     newWinningRegion.UnionWith(other.winningRegion);
     PositionalStrategy newStrategy = this.strategy;
     foreach(int from in other.strategy.GetDomain().Where(node => !winningRegion.Contains(node)))
     {
         newStrategy.Update(from, other.strategy.GetNextMove(from));
     }
     return new Solution(newWinningRegion, newStrategy);
 }