Exemple #1
0
 private void Backtrack(int l, Permutation g, IBacktracker backtracker)
 {
     if (backtracker.IsFinished())
     {
         return;
     }
     if (l == size)
     {
         backtracker.ApplyTo(g);
     }
     else
     {
         for (int i = 0; i < size; i++)
         {
             var h = this.permutations[l][i];
             if (h != null)
             {
                 Backtrack(l + 1, g.Multiply(h), backtracker);
             }
         }
     }
 }
Exemple #2
0
 /// <summary>
 /// Apply the backtracker to all permutations in the larger group.
 /// </summary>
 /// <param name="backtracker">a hook for acting on the permutations</param>
 public void Apply(IBacktracker backtracker)
 {
     this.Backtrack(0, new Permutation(size), backtracker);
 }