void MonthDayRuleTest::test_lifecycle_valid() { const String ruleName("MyRule"); const Month refMonth(12); const DayOfMonth refDayOfMonth(31); //test: MontDayRule::MonthDayRule(); MonthDayRule rule1; rule1.setRuleName(ruleName); CPPUNIT_ASSERT(1 == rule1.getMonth().getValue()); CPPUNIT_ASSERT(1 == rule1.getDayOfMonth().getValue()); //test: MontDayRule::MonthDayRule(const MonthDayRule& other); MonthDayRule rule2 (rule1); CPPUNIT_ASSERT(1 == rule2.getMonth().getValue()); CPPUNIT_ASSERT(1 == rule2.getDayOfMonth().getValue()); CPPUNIT_ASSERT(ruleName == rule2.getRuleName()); //test: MontDayRule::MonthDayRule(const String& ruleName, const Month& month, const DayOfMonth& dayOfMonth); MonthDayRule rule3 ("Rule3", refMonth, refDayOfMonth); CPPUNIT_ASSERT(refMonth == rule3.getMonth()); CPPUNIT_ASSERT(refDayOfMonth == rule3.getDayOfMonth()); //test: MontDayRule::MonthDayRule(const String& ruleName, MonthOfYear::eMonthOfYear month, const DayOfMonth& dayOfMonth); MonthDayRule rule4("Rule4", MonthOfYear::December, refDayOfMonth); CPPUNIT_ASSERT(refMonth == rule3.getMonth()); CPPUNIT_ASSERT(refDayOfMonth == rule3.getDayOfMonth()); }
bool funcCHAR(ParserParam ¶m, Token *tok){ switch(param.stack.back()){ case 0: shift(param,tok,36); break; case 3: shift(param,tok,36); break; case 7: if(!rule3(param)) return false; break; case 8: if(!rule4(param)) return false; break; case 9: shift(param,tok,36); break; case 12: if(!rule5(param)) return false; break; case 14: if(!rule6(param)) return false; break; case 19: shift(param,tok,36); break; case 25: if(!rule15(param)) return false; break; case 27: shift(param,tok,36); break; case 30: if(!rule17(param)) return false; break; case 31: if(!rule18(param)) return false; break; case 33: if(!rule19(param)) return false; break; case 34: if(!rule20(param)) return false; break; default: return false; break; } return true; }
bool funcEND(ParserParam ¶m, Token *tok){ switch(param.stack.back()){ case 1: shift(param,tok,2); break; case 2: param.isAccept = true; break; case 3: if(!rule2(param)) return false; break; case 4: if(!rule1(param)) return false; break; case 7: if(!rule3(param)) return false; break; case 8: if(!rule4(param)) return false; break; case 12: if(!rule5(param)) return false; break; case 14: if(!rule6(param)) return false; break; case 25: if(!rule15(param)) return false; break; case 30: if(!rule17(param)) return false; break; case 31: if(!rule18(param)) return false; break; case 33: if(!rule19(param)) return false; break; case 34: if(!rule20(param)) return false; break; default: return false; break; } return true; }
void MonthWeekDayRuleTest::test_lifecycle_valid() { const String ruleName("MyRule"); const MonthOfYear::eMonthOfYear refMonth = MonthOfYear::January; const MonthWeek::eMonthWeek refWeekOfMonth = MonthWeek::First ; const WeekDay::eWeekDay refWeekDay = WeekDay::Sunday; //test: MontDayRule::MonthDayRule(); MonthWeekDayRule rule1; rule1.setRuleName(ruleName); CPPUNIT_ASSERT(refMonth == rule1.getMonth().monthOfYear()); CPPUNIT_ASSERT(refWeekOfMonth == rule1.getMonthWeek()); CPPUNIT_ASSERT(refWeekDay == rule1.getWeekDay()); //test: MontDayRule::MonthDayRule(const MonthDayRule& other); MonthWeekDayRule rule2 (rule1); CPPUNIT_ASSERT(refMonth == rule2.getMonth().monthOfYear()); CPPUNIT_ASSERT(refWeekOfMonth == rule2.getMonthWeek()); CPPUNIT_ASSERT(refWeekDay == rule2.getWeekDay()); CPPUNIT_ASSERT(ruleName == rule2.getRuleName()); //test: MonthWeekDayRule::MonthWeekDayRule(const String& ruleName, const Month& month, MonthWeek::eMonthWeek weekInMonth, WeekDay::eWeekDay dayOfWeek); MonthWeekDayRule rule3 ("Rule3", Month(1), refWeekOfMonth, refWeekDay); CPPUNIT_ASSERT(refMonth == rule3.getMonth().monthOfYear()); CPPUNIT_ASSERT(refWeekOfMonth == rule3.getMonthWeek()); CPPUNIT_ASSERT(refWeekDay == rule3.getWeekDay()); //test: MonthWeekDayRule::MonthWeekDayRule(const String& ruleName, MonthOfYear::eMonthOfYear month, WeekOfMonth::eWeekOfMonth weekInMonth, WeekDay::eWeekDay dayOfWeek); MonthWeekDayRule rule4("Rule4", refMonth, refWeekOfMonth, refWeekDay); CPPUNIT_ASSERT(refMonth == rule4.getMonth().monthOfYear()); CPPUNIT_ASSERT(refWeekOfMonth == rule4.getMonthWeek()); CPPUNIT_ASSERT(refWeekDay == rule4.getWeekDay()); }
int main() { int i,j,k; int l,m,n,o,bc,flag=0,count1=0,x=0,count2=0,row=0,count3=0,col=0,col2=0,prevcount=0,count5=0,size1=2,size2=3; int cancount=0,lk,lm,count11=0; int arr1[3],arr2[3],arr3[3]; int ab,div1,div2,count10=0,initial=0,initial2=0,candicount=0,prevcount1=0; for(i=1;i<=size;i++) { for(j=1;j<=size;j++) { headarray[i][j]=NULL; } } scanf("%d",&size); memset(check, 0, (sizeof check[0][0])*size*size); memset(notin, 0, (sizeof notin[0][0])*size*size); memset(see, 0, (sizeof see[0][0])*size*size); // taking sudoku input for(i=1;i<=(size*size);i++) { for(j=1;j<=(size*size);j++) { scanf("%d",&arr[i][j]); if(arr[i][j]==0) count++; } } traverse(); // updating missing no matrix cross(); // crosshatching candidatelist(); // preparing candidate list rule1(); // rule1 while(1) { prevcount1=count; rule1(); // rule1 rule2_box(); //rule2 for box rule2_row(); // rule2 column rule2_col(); // rule 2 for row rule1(); // rule 1 rule3(); // rule 3 rule2_box(); //rule2 for box rule2_row(); rule2_col(); rule4(); // rule 4 if(prevcount1==count) break; } for(i=1;i<=size*size;i++) { for(j=1;j<=size*size;j++) { printf("%d ",arr[i][j]); } printf("\n"); } return 0; }
bool funcNUM(ParserParam ¶m, Token *tok){ switch(param.stack.back()){ case 3: if(!rule2(param)) return false; break; case 4: if(!rule1(param)) return false; break; case 7: if(!rule3(param)) return false; break; case 8: if(!rule4(param)) return false; break; case 12: if(!rule5(param)) return false; break; case 14: if(!rule6(param)) return false; break; case 19: if(!rule67(param)) return false; break; case 22: shift(param,tok,23); break; case 25: if(!rule15(param)) return false; break; case 27: shift(param,tok,99); break; case 28: shift(param,tok,99); break; case 30: if(!rule17(param)) return false; break; case 31: if(!rule18(param)) return false; break; case 33: if(!rule19(param)) return false; break; case 34: if(!rule20(param)) return false; break; case 37: shift(param,tok,99); break; case 39: if(!rule25(param)) return false; break; case 41: if(!rule26(param)) return false; break; case 42: shift(param,tok,99); break; case 44: if(!rule27(param)) return false; break; case 46: if(!rule28(param)) return false; break; case 48: shift(param,tok,99); break; case 50: shift(param,tok,99); break; case 52: shift(param,tok,99); break; case 53: if(!rule29(param)) return false; break; case 55: shift(param,tok,99); break; case 57: shift(param,tok,99); break; case 58: if(!rule30(param)) return false; break; case 59: if(!rule31(param)) return false; break; case 60: shift(param,tok,99); break; case 62: if(!rule32(param)) return false; break; case 63: shift(param,tok,99); break; case 65: if(!rule33(param)) return false; break; case 67: shift(param,tok,99); break; case 70: shift(param,tok,99); break; case 73: shift(param,tok,99); break; case 76: shift(param,tok,99); break; case 79: shift(param,tok,99); break; case 81: shift(param,tok,99); break; case 84: shift(param,tok,99); break; case 87: shift(param,tok,99); break; case 89: shift(param,tok,99); break; case 93: shift(param,tok,99); break; case 96: shift(param,tok,99); break; case 100: if(!rule54(param)) return false; break; case 101: if(!rule55(param)) return false; break; case 102: if(!rule56(param)) return false; break; case 103: if(!rule57(param)) return false; break; case 104: if(!rule58(param)) return false; break; case 105: if(!rule59(param)) return false; break; case 106: if(!rule60(param)) return false; break; case 107: if(!rule61(param)) return false; break; case 108: if(!rule62(param)) return false; break; case 109: if(!rule63(param)) return false; break; case 110: if(!rule64(param)) return false; break; case 111: if(!rule65(param)) return false; break; case 112: if(!rule66(param)) return false; break; default: return false; break; } return true; }
bool funcSEMI(ParserParam ¶m, Token *tok){ switch(param.stack.back()){ case 3: if(!rule2(param)) return false; break; case 4: if(!rule1(param)) return false; break; case 6: shift(param,tok,7); break; case 7: if(!rule3(param)) return false; break; case 8: if(!rule4(param)) return false; break; case 12: if(!rule5(param)) return false; break; case 14: if(!rule6(param)) return false; break; case 24: shift(param,tok,25); break; case 25: if(!rule15(param)) return false; break; case 27: shift(param,tok,39); break; case 28: shift(param,tok,39); break; case 30: if(!rule17(param)) return false; break; case 31: if(!rule18(param)) return false; break; case 33: if(!rule19(param)) return false; break; case 34: if(!rule20(param)) return false; break; case 37: shift(param,tok,39); break; case 39: if(!rule25(param)) return false; break; case 40: shift(param,tok,41); break; case 41: if(!rule26(param)) return false; break; case 43: shift(param,tok,44); break; case 44: if(!rule27(param)) return false; break; case 45: shift(param,tok,46); break; case 46: if(!rule28(param)) return false; break; case 50: shift(param,tok,39); break; case 52: shift(param,tok,39); break; case 53: if(!rule29(param)) return false; break; case 57: shift(param,tok,39); break; case 58: if(!rule30(param)) return false; break; case 59: if(!rule31(param)) return false; break; case 61: shift(param,tok,62); break; case 62: if(!rule32(param)) return false; break; case 64: shift(param,tok,65); break; case 65: if(!rule33(param)) return false; break; case 66: if(!rule35(param)) return false; break; case 68: if(!rule34(param)) return false; break; case 69: if(!rule37(param)) return false; break; case 71: if(!rule36(param)) return false; break; case 72: if(!rule39(param)) return false; break; case 74: if(!rule38(param)) return false; break; case 75: if(!rule41(param)) return false; break; case 77: if(!rule40(param)) return false; break; case 78: if(!rule44(param)) return false; break; case 80: if(!rule42(param)) return false; break; case 82: if(!rule43(param)) return false; break; case 83: if(!rule46(param)) return false; break; case 85: if(!rule45(param)) return false; break; case 86: if(!rule47(param)) return false; break; case 88: if(!rule48(param)) return false; break; case 91: if(!rule49(param)) return false; break; case 92: if(!rule50(param)) return false; break; case 95: if(!rule51(param)) return false; break; case 98: if(!rule52(param)) return false; break; case 99: if(!rule53(param)) return false; break; case 113: if(!rule68(param)) return false; break; default: return false; break; } return true; }
bool funcREAD(ParserParam ¶m, Token *tok){ switch(param.stack.back()){ case 3: if(!rule2(param)) return false; break; case 4: if(!rule1(param)) return false; break; case 7: if(!rule3(param)) return false; break; case 8: if(!rule4(param)) return false; break; case 12: if(!rule5(param)) return false; break; case 14: if(!rule6(param)) return false; break; case 25: if(!rule15(param)) return false; break; case 27: shift(param,tok,63); break; case 28: shift(param,tok,63); break; case 30: if(!rule17(param)) return false; break; case 31: if(!rule18(param)) return false; break; case 33: if(!rule19(param)) return false; break; case 34: if(!rule20(param)) return false; break; case 37: shift(param,tok,63); break; case 39: if(!rule25(param)) return false; break; case 41: if(!rule26(param)) return false; break; case 44: if(!rule27(param)) return false; break; case 46: if(!rule28(param)) return false; break; case 50: shift(param,tok,63); break; case 52: shift(param,tok,63); break; case 53: if(!rule29(param)) return false; break; case 57: shift(param,tok,63); break; case 58: if(!rule30(param)) return false; break; case 59: if(!rule31(param)) return false; break; case 62: if(!rule32(param)) return false; break; case 65: if(!rule33(param)) return false; break; default: return false; break; } return true; }