Sudoku C64
Basic
Actualizado el 27 de Diciembre del 2019 por Adelino (27 códigos) (Publicado el 23 de Octubre del 2019)
10.201 visualizaciones desde el 23 de Octubre del 2019
Programa para Commodore 64.


10 POKE 53280,0: POKE 53281,0
20 PRINT CHR$(151) CHR$(147)
30 DEF FN X(Y)=PEEK(Q2+Y)+256*PEEK(Q1+Y)
40 X1=49152: X2=49408: X3=49664
50 Y1=49920: Y2=50176: Y3=50432
60 Q1=51200: Q2=51456: Q=1133
70 B1=50688: B2=50944
80 FOR V=0 TO 2
90 FOR W=0 TO 2: READ A$: Q=Q+62
100 FOR N=0 TO 2
110 FOR M=0 TO 2: IF C%>9 GOTO 140
120 POKE B2+C%+48,C%
130 POKE B2+C%,48+C%
140 POKE Q+41,91
150 POKE Q-1,66: POKE Q+1,66
160 POKE Q-40,67: POKE Q+40,67
170 IF V+W=0 THEN POKE Q-39,114
180 IF V+W=4 THEN POKE Q+41,113
190 IF N+M=0 THEN POKE Q+39,107
200 IF N+M=4 THEN POKE Q+41,115
210 A%=ASC(MID$(A$,3*N+M+1))
220 IF A%<49 THEN A%=32
230 POKE Q,A%
240 POKE Q+54272,1
250 POKE Q1+C%,Q/256
260 POKE Q2+C%,Q-256*INT(Q/256)
270 Q=Q+2
280 POKE Y1+C%,27*V+9*W
290 POKE Y2+C%,27*N+9*M
300 POKE Y3+C%,27*V+9*N
310 C%=C%+1
320 POKE X1+C%,0
330 POKE X2+C%,0
340 POKE X3+C%,0
350 NEXT M,N,W,V
360 POKE B2+32,10
370 POKE 1154,112: POKE 1172,110
380 POKE Q+21,109: POKE Q+39,125
390 REM ***** TECLADO *****
400 A%=0:C%=0
410 IF A%=29 AND C%<80 THEN C%=C%+1
420 IF A%=157 AND C%>0 THEN C%=C%-1
430 IF A%=17 AND C%<72 THEN C%=C%+9
440 IF A%=145 AND C%>8 THEN C%=C%-9
450 Q=FN X(C%)
460 IF A%>57 OR A%<48 AND A%<>32 GOTO 500
470 IF A%=48 THEN A%=32
480 POKE Q,A%: A%=29
490 GOTO 410
500 POKE Q,PEEK(Q)+128
510 GET A$: IF A$="" GOTO 510
520 POKE Q,PEEK(Q)-128
530 A%=ASC(A$): IF A%<>13 GOTO 410
540 REM ***** VALIDAR *****
550 FOR V=0 TO 80: C%=V
560 Q=FN X(C%)
570 A%=PEEK(Q)-48: IF A%<0 GOTO 670
580 IF PEEK(X1+PEEK(Y1+C%)+A%) THEN A%=0
590 IF PEEK(X2+PEEK(Y2+C%)+A%) THEN A%=0
600 IF PEEK(X3+PEEK(Y3+C%)+A%) THEN A%=0
610 IF A%=0 THEN POKE Q,32: GOTO 670
620 POKE X1+PEEK(Y1+C%)+A%,1
630 POKE X2+PEEK(Y2+C%)+A%,1
640 POKE X3+PEEK(Y3+C%)+A%,1
650 POKE Q+54272,14
660 B(C%/27)=B(C%/27)+1
670 NEXT
680 REM ***** ORDENAR *****
690 FOR V=0 TO 2: N=0
700 FOR W=0 TO 2
710 IF B(W)>B(N) THEN N=W
720 NEXT: B(N)=-1
730 FOR W=27*N TO 27*N+26: C%=W
740 IF PEEK(FN X(C%))>48 GOTO 760
750 POKE B1+B%,C%: B%=B%+1
760 NEXT W,V
770 POKE 254,SGN(B%)
780 POKE B1+B%,255
790 FOR V=828 TO 958
800 READ A%: POKE V,A%
810 NEXT
820 SYS 834
830 GET A$: IF A$<>" " GOTO 830
840 IF PEEK(254)<255 GOTO 820
850 REM ***** DATOS *****
855 DATA 5.2......
860 DATA ....6.9..
865 DATA .........
870 DATA .41..7...
875 DATA ...5...6.
880 DATA ..5..2...
885 DATA .97.85...
890 DATA .......35
895 DATA .54....96
900 DATA169,032,160,000,145,178,198,254
905 DATA048,120,164,254,190,000,198,189
910 DATA000,201,133,178,189,000,200,133
915 DATA179,160,000,177,178,168,185,000
920 DATA199,168,024,125,000,195,133,251
925 DATA152,125,000,196,133,252,152,125
930 DATA000,197,133,253,192,010,240,015
935 DATA166,251,222,000,192,166,252,222
940 DATA000,193,166,253,222,000,194,136
945 DATA240,182,198,251,198,252,198,253
950 DATA166,251,189,000,192,208,240,166
955 DATA252,189,000,193,208,233,166,253
960 DATA189,000,194,208,226,254,000,194
965 DATA166,252,254,000,193,166,251,254
970 DATA000,192,185,000,199,160,000,145
975 DATA178,230,254,164,254,190,000,198
980 DATA016,141,096
No hay comentarios