public List <T> Evaluate(T startNode, INodeEvaluator <T> evaluator, ExitConditions exitConditions)
        {
            current.Add(startNode);
            while (true)
            {
                while (current.Count > 0)
                {
                    var n = SelectNextForEvaluation(current);
                    if (n == null)
                    {
                        return(solutions);
                    }
                    evaluator.Evalulate(n, this);
                    current.Remove(n);
                }

                if (next.Count > 0)
                {
                    // Swap
                    var s = current;
                    current = next;
                    next    = s;
                }
                else
                {
                    return(solutions);
                }
            }
        }
Exemple #2
0
 public SolverNodeRoot(
     VectorInt2 playerBefore, VectorInt2 push,
     IBitmap crateMap, IBitmap moveMap, INodeEvaluator evaluator, Puzzle puzzle)
     : base(null, playerBefore, push, crateMap, moveMap)
 {
     Evaluator = evaluator;
     Puzzle    = puzzle;
 }
Exemple #3
0
 protected SolverBase(INodeEvaluator evaluator)
 {
     this.evaluator = evaluator;
     BatchSize = 150;
 }
Exemple #4
0
 public Stepper(INodeEvaluator evaluator, IBitAnalyser analyser)
 {
     mEvaluator = evaluator;
     mAnalyser  = analyser;
 }
 public SolverNodeRootReverse(VectorInt2 playerBefore, VectorInt2 push, Bitmap crateMap, Bitmap moveMap, INodeEvaluator evaluator, Puzzle puzzle) : base(playerBefore, push, crateMap, moveMap, evaluator, puzzle)
 {
 }
Exemple #6
0
 protected SolverBase(INodeEvaluator evaluator)
 {
     this.evaluator = evaluator;
     BatchSize      = 150;
 }