Exemple #1
0
 public BucketRunner(int b1, int b2, int target)
 {
     this.rootBuckitTuple = new BucketTuple(new Bucket(b1), new Bucket(b2));
     this.target          = target;
     parents.Add(rootBuckitTuple);
     new BucketTuple(new Bucket(0), new Bucket(0));
 }
Exemple #2
0
        public string unit_test()
        {
            //BucketTuple bt = new BucketTuple(new Bucket(8, 5), new Bucket(6, 3));
            BucketTuple bt = new BucketTuple(b1, b2);

            bt.findPermutation();
            return(bt.getChilds());
        }
Exemple #3
0
 public static bool addToParents(BucketTuple bt)
 {
     if (parents.Contains(bt))
     {
         return(false);
     }
     else
     {
         parents.Add(bt);
     } return(true);
 }
Exemple #4
0
 //recursive algorithm over tree of buckets
 public void run(BucketTuple btTmp)
 {
     if (!detectTarget())
     {
         btTmp.findPermutation();
         if (btTmp.BL.Count > 0)
         {
             foreach (BucketTuple btChild in btTmp.BL)
             {
                 run(btChild);
             }
         }
     }
 }
Exemple #5
0
        public override bool Equals(object obj)
        {
            BucketTuple bt2 = (BucketTuple)obj;

            return(bt2.b1.Equals(this.b1) && bt2.b2.Equals(this.b2));
        }
Exemple #6
0
        public void findPermutation()
        {
            int a = b1.val; int A = b1.cap; int b = b2.val; int B = b2.cap;

            BucketTuple btTmp1 = new BucketTuple(new Bucket(b1.cap, 0), b2);
            BucketTuple btTmp2 = new BucketTuple(b1, new Bucket(b2.cap, 0));
            BucketTuple btTmp3; BucketTuple btTmp4; BucketTuple btTmp5; BucketTuple btTmp6;

            if ((a + b - B) >= 0)
            {
                btTmp3 = new BucketTuple(new Bucket(b1.cap, (a + b - B)), new Bucket(b2.cap, B));
            }
            else
            {
                btTmp3 = new BucketTuple(new Bucket(b1.cap, 0), new Bucket(b2.cap, (b + a)));
            }


            if ((b + a - A) >= 0)
            {
                btTmp4 = new BucketTuple(new Bucket(b1.cap, (A)), new Bucket(b2.cap, (b + a - A)));
            }
            else
            {
                btTmp4 = new BucketTuple(new Bucket(b1.cap, (a + b)), new Bucket(b2.cap, 0));
            }

            if (a == 0)
            {
                btTmp5 = new BucketTuple(new Bucket(A, A), new Bucket(B, b));
            }
            else
            {
                btTmp5 = new BucketTuple(new Bucket(A, A), new Bucket(B, B));
            }

            if (b == 0)
            {
                btTmp6 = new BucketTuple(new Bucket(A, a), new Bucket(B, B));
            }
            else
            {
                btTmp6 = new BucketTuple(new Bucket(A, A), new Bucket(B, B));
            }

            if (BucketRunner.addToParents(btTmp1))
            {
                BL.Add(btTmp1);
            }
            if (BucketRunner.addToParents(btTmp2))
            {
                BL.Add(btTmp2);
            }
            if (BucketRunner.addToParents(btTmp3))
            {
                BL.Add(btTmp3);
            }
            if (BucketRunner.addToParents(btTmp4))
            {
                BL.Add(btTmp4);
            }
            if (BucketRunner.addToParents(btTmp5))
            {
                BL.Add(btTmp5);
            }
            if (BucketRunner.addToParents(btTmp6))
            {
                BL.Add(btTmp6);
            }
        }