'ProgramMode:RUN 'http://www.planet-casio.com/Fr/programmes/programme3153-1-Sudoku-Anonyme-jeu-reflexion.html ' Port to C.Basic '2017 by sentaro21 Lbl 3 ViewWindow 1,127,0,1,63,0 For 0->X To 3 F-Line X*19+40,1,X*19+40,58 Next For 0->Y To 3 F-Line 40,Y*19+1,97,Y*19+1 Next Text 28,1,"Creation" Text 34,1," de la" Text 40,1," grille" Text 46,14,"|81" 1->A 1->B ClrMat A ClrMat B ClrMat D {11,11}->Dim Mat A {11,11}->Dim Mat B {83,11}->Dim Mat D 0->M For 1->A To 9 For 1->B To 9 Lbl 1 Text 46,5,M Int ((A-1)/3)*3+1+Int ((B-1)/3)->E 9->C {11,12,13,14,15,16,17,18,19}->List 1 1->Z While Mat D[(A-1)*9+B+1,Z+1]<>0 And Z<>9 Mat D[(A-1)*9+B+1,Z+1]->U List 1[U]-10->List 1[U] C-1->C Z+1->Z WhileEnd For 1->Z To A Mat A[B+1,Z+1]->U If U<>0 Then If List 1[U]>10 Then List 1[U]-10->List 1[U] C-1->C IfEnd IfEnd Next For 1->Z To B Mat A[Z+1,A+1]->V If V<>0 Then If List 1[V]>10 Then List 1[V]-10->List 1[V] C-1->C IfEnd IfEnd Next For 1->Z To 9 Mat B[E+1,Z+1]->W If W<>0 Then If List 1[W]>10 Then List 1[W]-10->List 1[W] C-1->C IfEnd IfEnd Next If C=0 Then For 1->Z To 9 0->Mat D[(A-1)*9+B+1,Z+1] Next If B<>1 Then B-1->B Else 9->B A-1->A IfEnd M-1->M Mat A[B+1,A+1]->U 1->Z While Mat D[(A-1)*9+B+1,Z+1]<>0 And Z<>9 Z+1->Z WhileEnd U->Mat D[(A-1)*9+B+1,Z+1] 0->Mat A[B+1,A+1] Int ((A-1)/3)*3+1+Int ((B-1)/3)->E 1->Z While Mat B[E+1,Z+1]<>0 Isz Z WhileEnd 0->Mat B[E+1,Z] Goto 1 IfEnd SortD(List 1) '1+Int (CRan#)->D RanInt#(1,C)->D MOD(List 1[D],10)->Mat A[B+1,A+1] Isz M 1->Z While Mat B[E+1,Z+1]<>0 Isz Z WhileEnd MOD(List 1[D],10)->Mat B[E+1,Z+1] Next Next Mat A->Mat B 40->Z While Z<>0 RanInt#(1,9)->A RanInt#(1,9)->B If Mat A[B+1,A+1]<>0 Then 0->Mat A[B+1,A+1] Z-1->Z IfEnd WhileEnd For 1->X To 9 For 1->Y To 9 If Mat A[Y+1,X+1]<>0 Then Text Y*6+1+Int ((Y-1)/3),X*6+35+Int ((X-1)/3),Mat A[Y+1,X+1] IfEnd Next Next Text 10,1,"SHIFT:" Text 16,1,"Completer" Text 22,1,"la grille" Text 28,1,"EXE: " Text 34,1,"Solution" Text 40,1,"DEL: " Text 46,1,"Autre" Text 52,1,"Grille" Lbl 2 If Getkey=44 Then Goto 3 IfEnd If Getkey=31 Then For 1->X To 9 For 1->Y To 9 If Mat A[B+1,A+1]<>Mat B[B+1,A+1] Then Text Y*6+1+Int ((Y-1)/3),X*6+35+Int ((X-1)/3),Mat B[Y+1,X+1] IfEnd Next Next Stop IfEnd If Getkey=78 Then Goto 4 IfEnd Goto 2 Lbl 4 Text 1,41,"_#E69D_" Text 7,35,"_#E69B_" 1->A 1->B Lbl 5 Getkey2->K If K=27 And A<>9 Then Text 1,A*6+35+Int ((A-1)/3)," " Isz A Text 1,A*6+35+Int ((A-1)/3),"_#E69D_" IfEnd If K=38 And A<>1 Then Text 1,A*6+35+Int ((A-1)/3)," " Dsz A Text 1,A*6+35+Int ((A-1)/3),"_#E69D_" IfEnd If K=28 And B<>1 Then Text B*6+1+Int ((B-1)/3),35," " Dsz B Text B*6+1+Int ((B-1)/3),35,"_#E69B_" IfEnd If K=37 And B<>9 Then Text B*6+1+Int ((B-1)/3),35," " Isz B Text B*6+1+Int ((B-1)/3),35,"_#E69B_" IfEnd If (K=72 Or K=73 Or K=74 Or K=62 Or K=63 Or K=64 Or K=52 Or K=53 Or K=54 Or K=71) And Mat A[B+1,A+1]=0 Then K=71=>0->I K=72=>1->I K=62=>2->I K=52=>3->I K=73=>4->I K=63=>5->I K=53=>6->I K=74=>7->I K=64=>8->I K=54=>9->I If I<>0 Then Text B*6+1+Int ((B-1)/3),A*6+35+Int ((A-1)/3),I Else Text B*6+1+Int ((B-1)/3),A*6+35+Int ((A-1)/3)," " IfEnd IfEnd If K=31 Then For 1->X To 9 For 1->Y To 9 If Mat A[B+1,A+1]<>Mat B[B+1,A+1] Then Text Y*6+1+Int ((Y-1)/3),X*6+35+Int ((X-1)/3),Mat B[Y+1,X+1] IfEnd Next Next Stop IfEnd Goto 5