public static string prtsgn_gua2(gBlob inblob, int lnkidx) { if (inblob.BeLinked[lnkidx]) { return("\t-" + spgua(inblob.links[lnkidx])); } else { return("\t" + spgua(inblob.links[lnkidx])); } }
public static string prtsgn(gBlob inblob, int lnkidx) { if (inblob.BeLinked[lnkidx]) { return("\t-" + inblob.links[lnkidx].ToString(pfm)); } else { return("\t" + inblob.links[lnkidx].ToString(pfm)); } }
public static string prtsgn_gua(gBlob inblob, int lnkidx) { string jiantou = "\n=>"; if (inblob.BeLinked[lnkidx]) { jiantou = "\n<="; } int basgua = inblob.gnum; string spa1 = string.Format(kordfmt[lnkidx], gua[basgua], liujiu(basgua, lnkidx)); basgua = inblob.links[lnkidx]; int dyst = rmap[lnkidx]; string spa2 = string.Format(kordfmt[dyst], gua[basgua], liujiu(basgua, dyst)); return(spa1 + jiantou + spa2 + "\n"); }
public static gBlob[] make(int sz) { gsizex2 = sz * 2; gmask = ~((-1 >> gsizex2) << gsizex2); gmaskhalf = ~((-1 >> sz) << sz); var arrsz = 1 << gsizex2; pfm = "X2"; //"D"+((int)(Math.Ceiling(Math.Log10(arrsz)))-1).ToString(); var rett = new gBlob[arrsz]; for (int i = 0; i < arrsz; i++) { rett[i] = new gBlob(i); } for (int vv = 0; vv < arrsz; vv++) { for (int k = 0; k < sz; k++) { int lower = vv & gmaskhalf; int upper = (vv >> sz) & gmaskhalf; if (((lower >> k) & 1) == ((upper >> k) & 1)) { int negvv = ((~vv) & gmask); int dyst = negvv ^ (1 << k); rett[dyst].links[k] = vv; rett[dyst].BeLinked[k] = true; rett[vv].links[k + sz] = dyst; dyst = negvv ^ (1 << (k + sz)); rett[dyst].links[sz + k] = vv; rett[dyst].BeLinked[sz + k] = true; rett[vv].links[k] = dyst; } } } for (int i = 0; i < arrsz; i++) { var tmpr = rett[i]; Console.WriteLine("\n\n(" + spgua(tmpr.gnum) + "):"); //tmpr.gnum.ToString(pfm) //for(int k=gsizex2-1;k>=0;k--) for (int k = 0; k < gsizex2; k++) { Console.WriteLine(prtsgn_gua2(tmpr, k)); } } return(rett); }