Float:Normal:Full 0üW:0üÁ ClrHome Menu("SUDOKU","Start New",1,"Retrieve Saved",2) Lbl 1 Output(1,6,"SUDOKU"):Output(2,5,"John Chen") Output(4,1,"Loading grid...") Output(5,1,"Wait 2-3 minutes") {9,9}üdim([A]) Fill(0,[A]) For(R,1,9) {9,8,7,6,5,4,3,2,1}üáS 0üW For(C,1,9) iPart((C-1)/3)+1üA Output(7,8,R):Output(8,8,C) SortD(áS):10-Cüdim(áS) If Á=0:randInt(1,10-C)üL If Á=1:L+1üL If L=11-C:1üL If Wù10-C:Then {9,8,7,6,5,4,3,2,1}üáS:0üW randInt(1,9)üL For(X,1,9) 0ü[A](R,X):End If C÷3 or R=9:R-1üR 1üC End áS(L)üN 0üÁ If R>1:Then:0üX Repeat Á=1 or X=R-1 X+1üX If [A](X,C)=N 1üÁ: End End If Rø4 and Rø7 and Rø1:Then For(X,(iPart((R-1)/3)+1)3-2,R-1) For(Y,A3-2,A3) If [A](X,Y)=N:1üÁ End:End:End If Á=0:Then 0üW Nü[A](R,C) 0üáS(L) End C-ÁüC W+ÁüW End End DelVar áSS DelVar áS 0üD Repeat D>0 and D<81 ClrHome Disp "DIFFICULTY","How many given" Input "squares? ",D:End Output(6,1,"Designating given squares...") For(X,1,D) Output(8,8,X) randInt(1,9)üR randInt(1,9)üC If fPart([A](R,C))=0:Then:[A](R,C)+.613ü[A](R,C):Else:X-1üX:End:End Lbl 2: {9,9}üdim([A]) Matrålist([A],9,áSUDO):If sum(áSUDO)<45 or sum(áSUDO)>53.1 Then:ClrHome:Disp "No saved game is","available.":Output(8,16,""):DelVar [A]:DelVar áSUDO:Stop:End:DelVar áSUDO FnOff :PlotsOff :AxesOff:GridOff ZoomSto 1üXmin:ú1üYmax: ú10üYmin:10*94/62üXmax 0üD For(R,1,9) For(C,1,9) If fPart([A](R,C))>0 Text(7R-7,7C-6,iPart([A](R,C))) If fPart([A](R,C))=.613 D+1üD End:End 1üR:1üC Text(0,66,"[ENTER] to"):Text(6,70,"Check") Text(15,66,"Given:"):Text(15,87,D) Text(44,66,"SUDOKU"):Text(50,66,"John"):Text(56,66,"Chen") Lbl 4 Line(1,ú4,10,ú4) Line(1,ú7,10,ú7) Vertical 4 Vertical 7 Line(C,úR,C,úR-1) Line(C+1,úR,C+1,úR-1) Line(C,úR,C+1,úR) Line(C,úR-1,1+C,úR-1) If fPart([A](R,C))=.613:Text(30,66,"Given") 0üK While K=0 getKeyüK End Text(30,66," ") If K=22:Then:ZoomRcl:AxesOn:FnOn :ClrHome:Disp "Don't worry.","Your game has","been saved.":Stop:End Line(C,úR,C,úR-1,0) Line(C+1,úR,C+1,úR-1,0) Line(C,úR,C+1,úR,0) Line(C,úR-1,1+C,úR-1,0) If K=25:R-1üR If K=34:R+1üR If K=24:C-1üC If K=26:C+1üC If R=0:1üR If R=10:9üR If C=0:1üC If C=10:9üC If K=24 or K=25 or K=26 or K=34:Goto 4 If fPart([A](R,C))ø.613:Then If K=45:Then iPart([A](R,C))ü[A](R,C) Text(7R-7,7C-6," ") End 0üN If Kù92 and K÷94:K-91üN: If Kù82 and K÷84:K-78üN: If Kù72 and K÷74:K-65üN: If 00 Then: Line(C,úR,C+1,úR-1) Line(C,úR-1,C+1,úR) W+1üW End If fPart([A](R,C))10=iPart([A](R,C)):M+1üM End:End Text(30,66,M+D):Text(30,75,"/81") If M+D=81:Goto 5 For(R,1,9) For(C,1,9) If fPart([A](R,C))10øiPart([A](R,C)) and fPart([A](R,C))ø.613 and fPart([A](R,C))>0 Then iPart([A](R,C))ü[A](R,C) Text(7R-7,7C-6," ") Line(C,úR,C+1,úR-1,0) Line(C,úR-1,C+1,úR,0):End End:End Text(30,66," ") 9üR 9üC End If K=104:Then Lbl 6 randInt(1,9)üR randInt(1,9)üC If fPart([A](R,C))=0:Then .613+[A](R,C)ü[A](R,C) Text(7R-7,7C-6,iPart([A](R,C))) D+1üD:Text(15,87,D) Else:Goto 6:End End Goto 4 Lbl 5 Text(36,66,"CONGRATS!") For(X,1,1000):End Repeat getKey>0 Text(randInt(0,56),randInt(0,94),"SUDOMASTER") End AxesOn:ZoomRcl:FnOn ClrHome:DelVar [A]:Output(8,16,"")