Beispiel #1
0
        static void ProcPair(bitarrPair pair, byte[] rule, List <bitarrPair> kole)
        {
            Console.WriteLine(pair);

            var p0int = pair.a[0].toInt();

            var p1int = pair.a[1].toInt();


            for (int i = 0; i < bitarr.blen; i++)
            {
                var k = pair.xchng(i, rule[i]);

                var k0int = k.a[0].toInt();
                var k1int = k.a[1].toInt();



                guarec[p0int][i]       = k1int;
                guarec[p1int][rule[i]] = k0int;

                guarec[k1int][rule[i]] = p0int;
                guarec[k0int][i]       = p1int;

                if (notcontn(kole, k))
                {
                    kole.Add(k);
                    ProcPair(k, rule, kole);
                }
            }
        }
Beispiel #2
0
        public bitarrPair Tsuo(int src, byte dst)
        {
            bitarrPair k = new bitarrPair(new bitarr(this.arr), new bitarr(this.arr, true));

            var srcboo = k.a[0].arr[src];
            var dstboo = k.a[1].arr[dst];

            k.a[0].arr[src] = dstboo;
            k.a[1].arr[dst] = srcboo;

            return(k);
        }
Beispiel #3
0
        static void ProcTsuo(bitarrPair pair, byte[] rule, List <bitarrPair> kole)
        {
            Console.WriteLine(pair);

            var p0int     = pair.a[0].toInt();
            var p0int_neg = pair.a[0].toInt(true);

            var p1int     = pair.a[1].toInt();
            var p1int_neg = pair.a[1].toInt(true);


            for (int i = 0; i < bitarr.blen; i++)
            {
                var k = pair.a[0].Tsuo(i, rule[i]);

                var k0int = k.a[0].toInt();
                var k1int = k.a[1].toInt();

                guarec[p0int][i]           = (k1int + 1);
                guarec[p0int_neg][rule[i]] = (k0int + 1);

                guarec[k1int][rule[i]] = -(p0int + 1);
                guarec[k0int][i]       = -(p0int_neg + 1);

                if (notcontn(kole, k))
                {
                    kole.Add(k);
                    ProcTsuo(k, rule, kole);
                }

                k = pair.a[1].Tsuo(i, rule[i]);

                k0int = k.a[0].toInt();
                k1int = k.a[1].toInt();

                guarec[p1int][i]           = (k1int + 1);
                guarec[p1int_neg][rule[i]] = (k0int + 1);

                guarec[k1int][rule[i]] = -(p1int + 1);
                guarec[k0int][i]       = -(p1int_neg + 1);

                if (notcontn(kole, k))
                {
                    kole.Add(k);
                    ProcTsuo(k, rule, kole);
                }
            }
        }
Beispiel #4
0
        static bool notcontn(List <bitarrPair> kole, bitarrPair tzt)
        {
            foreach (var pp in kole)
            {
                if (pp.a[0].toInt() == tzt.a[0].toInt() && pp.a[1].toInt() == tzt.a[1].toInt())
                {
                    return(false);
                }

                if (pp.a[1].toInt() == tzt.a[0].toInt() && pp.a[0].toInt() == tzt.a[1].toInt())
                {
                    return(false);
                }
            }

            return(true);
        }
Beispiel #5
0
        static void gpairr(int blenn, int rulen, bool tsuo = false)
        {
            guarec = bitarr.setblen(blenn, true);
            var kole = new List <bitarrPair>();

            byte[] rule    = bitarr.GenRule()[rulen];
            var    zeroone = new bitarrPair(bitarr.One, bitarr.Zero);

            kole.Add(zeroone);

            if (tsuo)
            {
                ProcTsuo(zeroone, rule, kole);
            }
            else
            {
                ProcPair(zeroone, rule, kole);
            }



            int lux = guarec.Length;

            /*
             * for (int i = 0; i < lux; i++) {
             *      Console.WriteLine(gBlob.gua[i] + "::");
             *      for(int y=0;y<bitarr.blen;y++)
             *              Console.WriteLine("\t" + gBlob.Pgua(guarec[i][y],rule[y],tsuo));
             *
             *      Console.ReadKey();
             * }
             */

            for (int i = 0; i < lux; i++)
            {
                Console.Write("[");

                var gg = guarec[i];
                for (int y = 0; y < bitarr.blen; y++)
                {
                    Console.Write(gg[y] + ",");
                }

                Console.WriteLine("],\t\t//" + i);
            }
        }