//Link between Cell and ALS public void QSearch_Cell2ALS_Link( ) { if (ALSLst == null) { PrepareALSLinkMan(1); } if (LinkCeAlsLst != null) { return; } LinkCeAlsLst = new List <LinkCellALS> [81]; if (ALSLst == null || ALSLst.Count < 2) { return; } foreach (var PA in ALSLst.Where(P => P.singly)) { foreach (var no in PA.FreeB.IEGet_BtoNo()) { int noB = (1 << no); Bit81 H = new Bit81(true); foreach (var P in PA.UCellLst.Where(q => (q.FreeB & noB) > 0)) { H &= pConnectedCells[P.rc]; } if (H.IsZero()) { continue; } foreach (var P in H.IEGetUCeNoB(pBDL, noB)) { var Q = new LinkCellALS(P, PA, no); if (LinkCeAlsLst[P.rc] == null) { LinkCeAlsLst[P.rc] = new List <LinkCellALS>(); } LinkCeAlsLst[P.rc].Add(Q); } } } for (int rc = 0; rc < 81; rc++) { if (LinkCeAlsLst[rc] != null) { LinkCeAlsLst[rc].Sort(); } } }
public int CompareTo(object obj) { LinkCellALS A = obj as LinkCellALS; return(this.ALS.ID - A.ALS.ID); }