src/puzzle.cpp
/*
Now looking for multi chains eliminations if any
the bfs must contain all candidates killed by the main assumption
and the source of all new strong links used
*/
Now looking for multi chains eliminations if any
the bfs must contain all candidates killed by the main assumption
and the source of all new strong links used
Now looking for multi chains eliminations if any the bfs must contain all candidates killed by the main assumption and the source of all new strong links used
void PUZZLE::NestedMultiShort(BFTAG & elims) {
	if(0){
		EE.Enl("entry nested multi short");
		Image(allsteps,"allsteps",0);
		Image(dn);
		Image(dpn);
	}
	for(int ie = 1; ie < zcx.izc; ie++) {
		const SET &chx = zcx.zc[ie];
		int nni = chx.ncd, aig2 = 1; 
		BFTAG zt;
		zt.SetAll_1();
		zt = zt.FalseState();
		zt -= allsteps;
		if(chx.type - SET_base)
			continue;
		for(int i = 0; i < nni; i++) { 
			USHORT cd = chx.tcd[i], j = cd << 1; 
			if(cum->On(j)) {
				aig2 = 0;
				break;
			}
			if(cum->Off(j ^ 1))
				zt &= dn.t[j];
		}
		if(aig2)
			elims |= zt; 
	}
}
void PUZZLE :: NestedMultiShort ( BFTAG & elims ) { if ( 0 ) { EE . Enl ( " " ) ; Image ( allsteps , " " , 0 ) ; Image ( dn ) ; Image ( dpn ) ; } for ( int ie = 1 ; ie < zcx . izc ; ie ++ ) { const SET & chx = zcx . zc [ ie ] ; int nni = chx . ncd , aig2 = 1 ; BFTAG zt ; zt . SetAll_1 ( ) ; zt = zt . FalseState ( ) ; zt -= allsteps ; if ( chx . type - SET_base ) continue ; for ( int i = 0 ; i < nni ; i ++ ) { USHORT cd = chx . tcd [ i ] , j = cd << 1 ; if ( cum -> On ( j ) ) { aig2 = 0 ; break ; } if ( cum -> Off ( j ^ 1 ) ) zt &= dn . t [ j ] ; } if ( aig2 ) elims |= zt ; } }
Now looking for multi chains eliminations if any
the bfs must contain all candidates killed by the main assumption
and the source of all new strong links used
Now looking for multi chains eliminations if any the bfs must contain all candidates killed by the main assumption and the source of all new strong links used
// must be  n false  // max one free  // candidate in tag form // set assigned // end ie