src/puzzle.cpp
//==============================================
// 90 is DynamicForcingChainPlus
// all "events"  claiming, pointing, pair, hidden pair, XWing
// follows an empty step 85
// consider each false candidate as start
// search for new bi values. If none, skip it
// look for new false thru basic sets
90 is DynamicForcingChainPlus
all "events"  claiming, pointing, pair, hidden pair, XWing
follows an empty step 85
consider each false candidate as start
search for new bi values. If none, skip it
look for new false thru basic sets
90 is DynamicForcingChainPlus all " events " claiming pointing pair hidden pair XWing follows an empty step 85 consider each false candidate as start search for new bi values . If none skip it look for new false thru basic sets
int PUZZLE::Rating_base_90() {
	if(options.ot)
		EE.Enl("start rating base 9.0 dynamic forcing chains plus");
	tchain.SetMaxLength(90);
	rbase = 90;
	zcf.h.dp = zcf.hdp_base; 
	tevent.LoadAll();
	zcf.hdp_dynamic = zcf.h.dp; 
	zcf.h.d.ExpandShort(*this, zcf.h.dp, 2);
	zcf.DeriveCycle(3, 4, 7, 2); 
	ChainPlus();
	if(tchain.IsOK(92))      
        return Rating_end(200);
	zcf.DeriveCycle(3, 7, 7, 5);   
	ChainPlus();
	if(tchain.IsOK(94))      
        return Rating_end(200);
	if(options.ot)
		EE.Enl("rating  dynamic forcing chains plus empty after 2 cycles");
    zcf.h.d.ExpandAll((*this), zcf.h.dp);
	if(tchain.IsOK(96))      
        return Rating_end(200);
	while(zcf.DeriveCycle(3, 9, 10)) 
		;
	ChainPlus();
	return Rating_end(200);
}
int PUZZLE :: Rating_base_90 ( ) { if ( options . ot ) EE . Enl ( " " ) ; tchain . SetMaxLength ( 90 ) ; rbase = 90 ; zcf . h . dp = zcf . hdp_base ; tevent . LoadAll ( ) ; zcf . hdp_dynamic = zcf . h . dp ; zcf . h . d . ExpandShort ( * this , zcf . h . dp , 2 ) ; zcf . DeriveCycle ( 3 , 4 , 7 , 2 ) ; ChainPlus ( ) ; if ( tchain . IsOK ( 92 ) ) return Rating_end ( 200 ) ; zcf . DeriveCycle ( 3 , 7 , 7 , 5 ) ; ChainPlus ( ) ; if ( tchain . IsOK ( 94 ) ) return Rating_end ( 200 ) ; if ( options . ot ) EE . Enl ( " " ) ; zcf . h . d . ExpandAll ( ( * this ) , zcf . h . dp ) ; if ( tchain . IsOK ( 96 ) ) return Rating_end ( 200 ) ; while ( zcf . DeriveCycle ( 3 , 9 , 10 ) ) ; ChainPlus ( ) ; return Rating_end ( 200 ) ; }
90 is DynamicForcingChainPlus
all "events"  claiming, pointing, pair, hidden pair, XWing
follows an empty step 85
consider each false candidate as start
search for new bi values.
90 is DynamicForcingChainPlus all " events " claiming pointing pair hidden pair XWing follows an empty step 85 consider each false candidate as start search for new bi values .
// restore the index in zcf   // store it for next steps // one cycle; //filter  short paths // one cycle;   //filter  short paths // must have here a step with full expansion //filter  short paths // no limit in set size