Created
February 3, 2017 19:34
-
-
Save Sneezry/ac2da486db4d47378165264208ea1f79 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 GRAPH | |
20 LOCATE 2,5:PRINT "Sudoku Group","Copy by SNAIL (2006)" | |
21 LOCATE 4,16:PRINT "[3.0]" | |
30 LOCATE 5,10:PRINT "SNAIL Soft"; | |
40 W$=INKEY$ | |
41 CLS:PRINT "1.Easy","2.Middle","3.Hard","4.From Files" | |
42 LOCATE 5,10:PRINT "SNAIL Soft"; | |
43 W$=INKEY$ | |
44 IF ASC(W$)=98 THEN L=10:DJ$="EASY":50 | |
45 IF ASC(W$)=110 THEN L=9:DJ$="MIDDLE":50 | |
46 IF ASC(W$)=109 THEN L=8:DJ$="HARD":50 | |
47 IF ASC(W$)=103 THEN DJ$="File":1450 | |
48 BEEP:GOTO 43 | |
50 CLS:PRINT "Working Out..." | |
60 FOR Y=1 TO 9 | |
61 FOR X=1 TO 9 | |
69 IF RND(1)*40<L THEN 71 | |
70 A(X,Y)=0:GOTO 190 | |
71 T=PEEK(1015)*3600+PEEK(1016)*60+PEEK(1017)/2 | |
72 IF PEEK(1015)*3600+PEEK(1016)*60+PEEK(1017)/2-T>5 THEN 50 | |
73 A(X,Y)=INT(RND(1)*10) | |
74 IF A(X,Y)>9 THEN 72 | |
75 IF X=1 THEN 83 | |
80 FOR A=1 TO X-1 | |
81 IF A(X,Y)=A(A,Y)THEN 72 | |
82 NEXT A | |
83 IF Y=1 THEN 90 | |
84 FOR B=1 TO Y-1 | |
85 IF A(X,Y)=A(X,B)THEN 72 | |
86 NEXT B | |
90 IF(X-1)/3=INT((X-1)/3)THEN IF(Y-1)/3=INT((Y-1)/3)THEN 92 | |
91 GOTO 100 | |
92 IF A(X,Y)=A(X+1,Y)OR A(X,Y)=A(X+2,Y)OR A(X,Y)=A(X+1,Y+1)THEN 72 | |
93 IF A(X,Y)=A(X+2,Y+1)OR A(X,Y)=A(X+1,Y+2)OR A(X,Y)=A(X+2,Y+2)THEN 72 | |
100 IF(X-2)/3=INT((X-2)/3)AND(Y-1)/3=INT((Y-1)/3)THEN 102 | |
101 GOTO 110 | |
102 IF A(X,Y)=A(X-1,Y)OR A(X,Y)=A(X+1,Y)OR A(X,Y)=A(X-1,Y+1)THEN 72 | |
103 IF A(X,Y)=A(X+1,Y+1)OR A(X,Y)=A(X-1,Y+2)OR A(X,Y)=A(X+1,Y+2)THEN 72 | |
110 IF X/3=INT(X/3)THEN IF(Y-1)/3=INT((Y-1)/3)THEN 112 | |
111 GOTO 120 | |
112 IF A(X,Y)=A(X-2,Y)OR A(X,Y)=A(X-1,Y)OR A(X,Y)=A(X-2,Y+1)THEN 72 | |
113 IF A(X,Y)=A(X-1,Y+1)OR A(X,Y)=A(X-2,Y+2)OR A(X,Y)=A(X-1,Y+2)THEN 72 | |
120 IF(X-1)/3=INT((X-1)/3)THEN IF(Y-2)/3=INT((Y-2)/3)THEN 122 | |
121 GOTO 130 | |
122 IF A(X,Y)=A(X+1,Y-1)OR A(X,Y)=A(X+2,Y-1)OR A(X,Y)=A(X+1,Y)THEN 72 | |
123 IF A(X,Y)=A(X+2,Y)OR A(X,Y)=A(X+1,Y+1)OR A(X,Y)=A(X+2,Y+1)THEN 72 | |
130 IF(X-2)/3=INT((X-2)/3)THEN IF(Y-2)/3=INT((Y-2)/3)THEN 132 | |
131 GOTO 140 | |
132 IF A(X,Y)=A(X-1,Y-1)OR A(X,Y)=A(X+1,Y-1)OR A(X,Y)=A(X-1,Y)THEN 72 | |
133 IF A(X,Y)=A(X+1,Y)OR A(X,Y)=A(X-1,Y+1)OR A(X,Y)=A(X+1,Y+1)THEN 72 | |
140 IF(X-2)/3=INT((X-2)/3)THEN IF Y/3=INT(Y/3)THEN 142 | |
141 GOTO 150 | |
142 IF A(X,Y)=A(X-2,Y-1)OR A(X,Y)=A(X-1,Y-1)OR A(X,Y)=A(X-2,Y)THEN 72 | |
143 IF A(X,Y)=A(X-1,Y)OR A(X,Y)=A(X-2,Y+1)OR A(X,Y)=A(X-1,Y+1)THEN 72 | |
150 IF(X-1)/3=INT((X-1)/3)THEN IF Y/3=INT(Y/3)THEN 152 | |
151 GOTO 160 | |
152 IF A(X,Y)=A(X+1,Y-2)OR A(X,Y)=A(X+2,Y-2)OR A(X,Y)=A(X+1,Y-1)THEN 72 | |
153 IF A(X,Y)=A(X+2,Y-1)OR A(X,Y)=A(X+1,Y)OR A(X,Y)=A(X+2,Y)THEN 72 | |
160 IF(X-2)/3=INT((X-2)/3)THEN IF Y/3=INT(Y/3)THEN 162 | |
161 GOTO 170 | |
162 IF A(X,Y)=A(X+1,Y-2)OR A(X,Y)=A(X-1,Y-2)OR A(X,Y)=A(X+1,Y-1)THEN 72 | |
163 IF A(X,Y)=A(X-1,Y-1)OR A(X,Y)=A(X+1,Y)OR A(X,Y)=A(X-1,Y)THEN 72 | |
170 IF X/3=INT(X/3)THEN IF Y/3=INT(Y/3)THEN 172 | |
171 GOTO 180 | |
172 IF A(X,Y)=A(X-2,Y-2)OR A(X,Y)=A(X-1,Y-2)OR A(X,Y)=A(X-2,Y-1)THEN 72 | |
173 IF A(X,Y)=A(X-1,Y-1)OR A(X,Y)=A(X-2,Y)OR A(X,Y)=A(X-1,Y)THEN 72 | |
180 LOCATE 2,1:PRINT X;",";Y | |
190 NEXT X | |
200 NEXT Y | |
210 CLS:PRINT "Marking Numbers..." | |
220 FOR Y=1 TO 9 | |
230 FOR X=1 TO 9 | |
240 IF A(X,Y)=0 THEN B(X,Y)=0 ELSE B(X,Y)=1 | |
250 LOCATE 2,1:PRINT X;",";Y | |
260 NEXT X | |
270 NEXT Y | |
280 CLS:LOCATE 1,14:PRINT DJ$ | |
290 BOX 4,4,76,76 | |
300 FOR A=4 TO 76 STEP 2 | |
301 DRAW A,28 | |
302 NEXT A | |
310 FOR A=4 TO 76 STEP 2 | |
311 DRAW A,52 | |
312 NEXT A | |
320 FOR A=4 TO 76 STEP 2 | |
321 DRAW 28,A | |
322 NEXT A | |
330 FOR A=4 TO 76 STEP 2 | |
331 DRAW 52,A | |
332 NEXT A | |
340 FOR Y=1 TO 9 | |
350 FOR X=1 TO 9 | |
360 IF A(X,Y)=0 THEN 480 | |
370 BOX X*8-3,Y*8-3,X*8+3,Y*8+3,1 | |
380 IF A(X,Y)=1 THEN C(1,1)=1:C(1,2)=1:C(2,1)=1:C(3,1)=1:C(3,2)=1:C(4,1)=1:C(5,1)=1:C(5,2)=1 | |
390 IF A(X,Y)=2 THEN C(2,1)=1:C(4,3)=1 | |
400 IF A(X,Y)=3 THEN C(2,1)=1:C(4,1)=1 | |
410 IF A(X,Y)=4 THEN C(1,2)=1 :C(4,1)=1:C(5,1)=1:C(5,2)=1 | |
420 IF A(X,Y)=5 THEN C(2,3)=1:C(4,1)=1 | |
430 IF A(X,Y)=6 THEN C(2,3)=1 | |
440 IF A(X,Y)=7 THEN C(2,1)=1:C(3,1)=1:C(3,2)=1:C(4,1)=1:C(5,1)=1:C(5,2)=1 | |
450 IF A(X,Y)=9 THEN C(4,1)=1 | |
460 DRAW X*8-1,Y*8-2,C(1,1) | |
461 DRAW X*8,Y*8-2,C(1,2) | |
462 DRAW X*8+1,Y*8-2,C(1,3) | |
463 DRAW X*8-1,Y*8-1,C(2,1) | |
464 DRAW X*8+1,Y*8-1,C(2,3) | |
465 DRAW X*8-1,Y*8,C(3,1) | |
466 DRAW X*8,Y*8,C(3,2) | |
467 DRAW X*8+1,Y*8,C(3,3) | |
468 DRAW X*8-1,Y*8+1,C(4,1) | |
469 DRAW X*8+1,Y*8+1,C(4,3) | |
470 DRAW X*8-1,Y*8+2,C(5,1) | |
471 DRAW X*8,Y*8+2,C(5,2) | |
472 DRAW X*8+1,Y*8+2,C(5,3) | |
473 C(1,1)=0:C(1,2)=0:C(1,3)=0:C(2,1)=0:C(2,3)=0:C(3,1)=0:C(3,2)=0:C(3,3)=0:C(4,1)=0:C(4,3)=0 | |
474 C(5,1)=0:C(5,2)=0:C(5,3)=0 | |
480 NEXT X | |
490 NEXT Y | |
500 X=1:Y=1 | |
510 BOX X*8-3,Y*8-3,X*8+3,Y*8+3,0,2:XA=X:YA=Y | |
520 W$=INKEY$ | |
521 IF ASC(W$)>19 AND ASC(W$)<24 THEN 530 ELSE 630 | |
530 IF ASC(W$)=20 THEN Y=Y-1 | |
540 IF Y<1 THEN Y=1:BEEP:520 | |
550 IF ASC(W$)=21 THEN Y=Y+1 | |
560 IF Y>9 THEN Y=9:BEEP:520 | |
570 IF ASC(W$)=23 THEN X=X-1 | |
580 IF X<1 THEN X=1:BEEP:520 | |
590 IF ASC(W$)=22 THEN X=X+1 | |
600 IF X>9 THEN X=9:BEEP:520 | |
610 BOX XA*8-3,YA*8-3,XA*8+3,YA*8+3,0,2 | |
620 GOTO 510 | |
630 IF ASC(W$)=13 THEN 1070 | |
640 IF B(X,Y)=1 THEN BEEP:520 | |
650 IF ASC(W$)=98 THEN 670 | |
651 IF ASC(W$)=110 THEN 700 | |
652 IF ASC(W$)=109 THEN 730 | |
653 IF ASC(W$)=103 THEN 760 | |
654 IF ASC(W$)=104 THEN 781 | |
655 IF ASC(W$)=106 THEN 790 | |
656 IF ASC(W$)=116 THEN 820 | |
657 IF ASC(W$)=121 THEN 850 | |
658 IF ASC(W$)=117 THEN 880 | |
660 BEEP:GOTO 520 | |
670 A(X,Y)=1 | |
680 C(1,3)=1:C(2,3)=1:C(3,3)=1:C(4,3)=1:C(5,3)=1 | |
690 GOTO 900 | |
700 A(X,Y)=2 | |
710 C(1,1)=1:C(1,2)=1:C(1,3)=1:C(2,3)=1:C(3,1)=1:C(3,2)=1:C(3,3)=1:C(4,1)=1:C(5,1)=1:C(5,2)=1 | |
711 C(5,3)=1 | |
720 GOTO 900 | |
730 A(X,Y)=3 | |
740 C(1,1)=1:C(1,2)=1:C(1,3)=1:C(2,3)=1:C(3,1)=1:C(3,2)=1:C(3,3)=1:C(4,3)=1:C(5,1)=1:C(5,2)=1 | |
741 C(5,3)=1 | |
750 GOTO 900 | |
760 A(X,Y)=4 | |
770 C(1,1)=1:C(1,3)=1:C(2,1)=1:C(2,3)=1:C(3,1)=1:C(3,2)=1:C(3,3)=1:C(4,3)=1:C(5,3)=1 | |
780 GOTO 900 | |
781 A(X,Y)=5 | |
782 C(1,1)=1:C(1,2)=1:C(1,3)=1:C(2,1)=1:C(3,1)=1:C(3,2)=1:C(3,3)=1:C(4,3)=1:C(5,1)=1:C(5,2)=1 | |
783 C(5,3)=1 | |
784 GOTO 900 | |
790 A(X,Y)=6 | |
800 C(1,1)=1:C(1,2)=1:C(1,3)=1:C(2,1)=1:C(3,1)=1:C(3,2)=1:C(3,3)=1:C(4,1)=1:C(4,3)=1:C(5,1)=1 | |
801 C(5,2)=1:C(5,3)=1 | |
810 GOTO 900 | |
820 A(X,Y)=7 | |
830 C(1,1)=1:C(1,2)=1:C(1,3)=1:C(2,3)=1:C(3,3)=1:C(4,3)=1:C(5,3)=1 | |
840 GOTO 900 | |
850 A(X,Y)=8 | |
860 C(1,1)=1:C(1,2)=1:C(1,3)=1:C(2,1)=1:C(2,3)=1:C(3,1)=1:C(3,2)=1:C(3,3)=1:C(4,1)=1:C(4,3)=1 | |
861 C(5,1)=1:C(5,2)=1:C(5,3)=1 | |
870 GOTO 900 | |
880 A(X,Y)=9 | |
890 C(1,1)=1:C(1,2)=1:C(1,3)=1:C(2,1)=1:C(2,3)=1:C(3,1)=1:C(3,2)=1:C(3,3)=1:C(4,3)=1:C(5,1)=1 | |
891 C(5,2)=1:C(5,3)=1 | |
900 BOX X*8-2,Y*8-2,X*8+2,Y*8+2,1,0 | |
910 DRAW X*8-1,Y*8-2,C(1,1) | |
920 DRAW X*8,Y*8-2,C(1,2) | |
930 DRAW X*8+1,Y*8-2,C(1,3) | |
940 DRAW X*8-1,Y*8-1,C(2,1) | |
950 DRAW X*8+1,Y*8-1,C(2,3) | |
960 DRAW X*8-1,Y*8,C(3,1) | |
970 DRAW X*8,Y*8,C(3,2) | |
980 DRAW X*8+1,Y*8,C(3,3) | |
990 DRAW X*8-1,Y*8+1,C(4,1) | |
1000 DRAW X*8+1,Y*8+1,C(4,3) | |
1010 DRAW X*8-1,Y*8+2,C(5,1) | |
1020 DRAW X*8,Y*8+2,C(5,2) | |
1030 DRAW X*8+1,Y*8+2,C(5,3) | |
1040 C(1,1)=0:C(1,2)=0:C(1,3)=0:C(2,1)=0:C(2,3)=0:C(3,1)=0:C(3,2)=0:C(3,3)=0:C(4,1)=0:C(4,3)=0 | |
1050 C(5,1)=0:C(5,2)=0:C(5,3)=0 | |
1060 GOTO 520 | |
1070 LOCATE 2,11:PRINT " Checking ":A=0:B=0 | |
1080 FOR Y=1 TO 9 | |
1090 FOR X=1 TO 9 | |
1100 A=A+A(X,Y) | |
1110 B=B+A(X,Y)^2 | |
1120 NEXT X | |
1130 IF A=45 THEN 1150 | |
1140 IF B=285 THEN 1150 | |
1141 GOTO 1350 | |
1150 A=0:B=0 | |
1160 NEXT Y | |
1161 A=0:B=0 | |
1170 FOR X=1 TO 9 | |
1180 FOR Y=1 TO 9 | |
1190 A=A+A(X,Y) | |
1200 B=B+A(X,Y)^2 | |
1201 NEXT Y | |
1210 IF A=45 THEN 1230 | |
1220 IF B=285 THEN 1230 | |
1221 GOTO 1350 | |
1230 A=0:B=0 | |
1240 NEXT X | |
1250 FOR Y=1 TO 7 STEP 3 | |
1260 FOR X=1 TO 7 STEP 3 | |
1270 A=A(X,Y)+A(X+1,Y)+A(X+2,Y)+A(X,Y+1)+A(X+1,Y+1)+A(X+2,Y+1)+A(X,Y+2)+A(X+1,Y+2)+A(X+2,Y+2) | |
1280 B=A(X,Y)^2+A(X+1,Y)^2+A(X+2,Y)^2+A(X,Y+1)^2+A(X+1,Y+1)^2+A(X+2,Y+1)^2+A(X,Y+2)^2 | |
1290 B=B+A(X+1,Y+2)^2+A(X+2,Y+2)^2 | |
1300 IF A=45 THEN 1320 | |
1310 IF B=285 THEN 1320 | |
1311 GOTO 1350 | |
1320 A=0:B=0 | |
1330 NEXT X | |
1340 NEXT Y | |
1341 GOTO 1351 | |
1350 LOCATE 2,11:PRINT "YOU LOST!":GOTO 1360 | |
1351 LOCATE 2,11:PRINT "VERY GOOD!" | |
1360 LOCATE 3,11:PRINT " Another? " | |
1370 LOCATE 4,11:PRINT " (Yes/No) " | |
1380 W$=INKEY$ | |
1390 IF ASC(W$)=121 THEN 41 | |
1400 IF ASC(W$)=110 THEN 1420 | |
1410 BEEP:GOTO 1380 | |
1420 CLS:LOCATE 2,8:PRINT "SUDOKU"," www.SUDOKU.name" | |
1430 LOCATE 5,10:PRINT "SNAIL Soft"; | |
1440 END | |
1450 TEXT:CLS:INPUT "File Name:";NA$ | |
1460 GRAPH:CLS:PRINT "Opening File ";NA$;".sud.DAT..." | |
1461 OPEN NA$+".sud" FOR INPUT AS #1 | |
1470 FOR Y=1 TO 9 | |
1480 FOR X=1 TO 9 | |
1490 INPUT #1,A(X,Y) | |
1491 IF A(X,Y)=0 THEN B(X,Y)=0 ELSE B(X,Y)=1 | |
1500 LOCATE 3,1:PRINT X;",";Y | |
1510 NEXT X | |
1520 NEXT Y | |
1521 CLOSE #1 | |
1530 GOTO 280 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment