예제 #1
0
 public Varset Subtract(Varset varset)
 {
     Varset cp = new Varset(varset);
     if (cp.item.Length < item.Length)
     {
         AlignLength(cp);
     }
     Varset one = new Varset(1);
     one.Set(0, true);
     cp = cp.Not();
     cp = cp.StaticAdd(one);
     cp = cp.StaticAdd(this);
     return cp;
 }
예제 #2
0
 public Varset NextPermutation()
 {
     Varset vs = new Varset(this);
     Varset one = new Varset(0);
     one.Set(0, true);
     Varset tmp = vs.Or(vs.Subtract(one)).StaticAdd(one);
     Varset nextVariables = tmp.Or(tmp.And(tmp.Not().StaticAdd(one)).Divide(vs.And(vs.Not().StaticAdd(one))).RightShift(1).Subtract(one));
     return nextVariables;
 }