private void _developDisp2Ex(Bit81[] GLC) { List <UCell> qBDL = new List <UCell>(); pBDL.ForEach(p => qBDL.Add(p.Copy())); foreach (var P in qBDL.Where(q => q.FreeB > 0)) { int E = 0; for (int n = 0; n < 9; n++) { if (GLC[n].IsHit(P.rc)) { E |= (1 << n); } } if (E > 0) { UCell Q = pBDL[P.rc]; P.SetNoBBgColor(E, Colors.White, Colors.PowderBlue); P.SetNoBColorRev(E, Colors.Blue); Q.SetNoBBgColor(E, Colors.White, Colors.PowderBlue); Q.SetNoBColorRev(E, Colors.Red); int sb = Q.FreeB.DifSet(E); Q.CancelB = E; if (sb.BitCount() == 1) { Q.FixedNo = sb.BitToNum() + 1; SolCode = 1; } else if (sb.BitCount() == 0) { Q.SetCellBgColor(Colors.Violet); } } } devWin.Set_dev_GBoard(qBDL); }
private bool _ForceChainHouseDispEx(Bit81[] sPass, Bit81[] sTrue, int hs0, int no0) { string dspOpt = GNPXApp000.GMthdOption["ForceLx"]; if (hs0 < 0)// dspOpt:ForceL2" { Result = ResultLong = "ForceChain_House"; if (__SimpleAnalizerB__) { return(true); } pAnMan.SnapSaveGP(true); return(SolCode > 0); } string st0 = "", st2 = ""; for (int nox = 0; nox < 9; nox++) { if (sTrue != null) { if (sTrue[nox].IsZero()) { continue; } foreach (var rc in sTrue[nox].IEGet_rc()) { if (sPass[nox].IsHit(rc)) { continue; } sPass[nox].BPSet(rc); UCell Q = pBDL[rc]; Q.FixedNo = nox + 1; int elm = Q.FreeB.DifSet(1 << nox); Q.CancelB = elm; SolCode = 1; if (SolInfoB) { Q.SetNoBBgColor(1 << nox, Colors.Red, Colors.LightGreen); Q.SetNoBColorRev(elm, Colors.Red); st0 = $"ForceChain_House({_HouseToString(hs0)}/#{(no0+1)}) r{(Q.r+1)}c{(Q.c+1)}/#{(nox+1)} is true"; string st1 = ""; foreach (var P in pBDL.IEGetCellInHouse(hs0, 1 << no0)) { USuperLink USLK = pSprLKsMan.get_L2SprLK(P.rc, no0, FullSearchB: true, DevelopB: false); //Accurate path st1 += "\r" + pSprLKsMan._GenMessage2true(USLK, Q, nox); if (dspOpt != "ForceL2") { P.SetNoBBgColor(1 << no0, Colors.Green, Colors.Yellow); } } st2 = st0 + st1; extRes += "\r" + st2; //(Description of each solution) extRes = extRes.TrimStart(); if (dspOpt == "ForceL0") { Result = ResultLong = st0; if (__SimpleAnalizerB__) { return(true); } if (!pAnMan.SnapSaveGP(false)) { return(true); } extRes = ""; st2 = ""; if (!SDK_Ctrl.MltAnsSearch) { return(true); } } } } } if (SolInfoB && dspOpt == "ForceL1" && st2 != "") { st0 = $"ForceChain_House({_HouseToString(hs0)}/#{(no0+1)})"; Result = ResultLong = st0; if (__SimpleAnalizerB__) { return(true); } if (!pAnMan.SnapSaveGP(false)) { return(true); } extRes = ""; st2 = ""; if (!SDK_Ctrl.MltAnsSearch) { return(true); } } } return(SolCode > 0); }