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); } } }
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); }
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); } } }
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); }
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); } }