Sudoku C64
Basic
Actualizado el 24 de Enero del 2026 por Adelino (28 códigos) (Publicado el 23 de Octubre del 2019)
12.899 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 dim D(9,3),G(2),K(255),Q(81)
40 c1=49408: c2=49664: c3=49920
50 c4=50176: c5=50432: c6=50688
60 c7=50944: c8=51200
70 def fn A(n)=c4+peek(n+c)+a
80 for x=0 to 990 y=x+48: K(y)=y: z=z=0
100 poke c8+x+65,x+10
110 poke c8+x,y: poke c8+y,x
120 if x=4 or z=0 goto 140
130 read D(x,0),D(x,1),D(x,2),D(x,3)
140 next
150 K(32)=32: K(46)=32: K(48)=32
160 for x=830 to 958: read a$
170 a=peek(c8+asc(mid$(a$,2)))
180 poke x,a+16*peek(c8+asc(a$))
190 next
200 poke c8+32,10: q=1012
210 for w=0 to 2: q=q+40
220 for x=0 to 2: q=q+59: read a$
230 for y=0 to 2: q=q+1
240 poke q+1,66: a=3*x
250 for z=0 to 2: q=q+2
260 if x=0 then poke q-40,67
270 poke q+1,66: poke q+40,67
280 if D(a,0)=0 goto 310
290 poke q-41,D(a,0): poke q-39,D(a,1)
300 poke q+39,D(a,3): poke q+41,D(a,2)
310 a=a+1: c=c+1: Q(c)=q
320 poke q,K(asc(mid$(a$,3*y+z+1)))
330 poke q+54272,1
340 poke c6+c,q/256
350 poke c5+c,q-256*peek(c6+c)
360 poke c4+c,0
370 poke c4+c+81,0
380 poke c4+c+162,0
390 poke c3+c,27*w+9*y+162
400 poke c2+c,27*y+9*z+81
410 poke c1+c,27*w+9*x
420 next z,y,x,w
430 rem **** Teclado ****
440 if e=29 and c<81 then c=c+1
450 if e=17 and c<73 then c=c+9
460 if e=157 and c>1 then c=c-1
470 if e=145 and c>9 then c=c-9
480 a=K(e): q=Q(c)
490 if a then poke q,a: e=29: goto 430
500 poke q,peek(q)+128
510 get e$: if e$="" goto 510
520 poke q,peek(q)-128
530 e=asc(e$): if e<>13 goto 430
550 rem **** Validar ****
560 for c=1 to 81570 q=Q(c): a=peek(c8+peek(q))
580 x=fn A(c1): y=fn A(c2): z=fn A(c3)
590 if peek(x)+peek(y)+peek(z) then a=10
600 if a=10 then poke q,32: goto 640
610 poke x,1: poke y,1: poke z,1
620 poke q+54272,14
630 e=(c-1)/27: G(e)=G(e)+1
640 next
650 rem **** Ordenar ****
660 for x=0 to 2: y=0
670 if G(1)>G(y) then y=1
680 if G(2)>G(y) then y=2
690 G(y)=-1
700 for c=27*y+1 to 27*y+27
710 a=peek(Q(c))
720 if a=32 then b=b+1: poke c7+b,c
730 next c,x740 poke 254,sgn(b)+1
750 poke c7+b+1,0
760 sys 834
770 get e$: if e$<>" " goto 770
780 if peek(254) goto 760
790 rem **** Vertices ****
800 data 112,114,91,107,114,110,115,91
810 data 107,91,113,109,91,115,125,113
820 rem **** Ensamblador ****
830 data A9,20 : rem *LDA #20
832 data 91,B2 : rem STA (B2),Y
834 data C6,FE : rem *DEC FE
836 data F0,78 : rem BEQ 958
838 data A4,FE : rem LDY FE
840 data BE,00,C7: rem LDX C700,Y
843 data BD,00,C6: rem *LDA C600,X
846 data 85,B3 : rem STA B3
848 data BD,00,C5: rem LDA C500,X
851 data 85,B2 : rem STA B2
853 data A0,00 : rem LDY #00
855 data B1,B2 : rem LDA (B2),Y
857 data A8 : rem TAY858 data B9,00,C8: rem LDA C800,Y
861 data A8 : rem TAY862 data 18 : rem CLC863 data 7D,00,C1: rem ADC C100,X
866 data 85,FB : rem STA FB
868 data 98 : rem TYA869 data 7D,00,C2: rem ADC C200,X
872 data 85,FC : rem STA FC
874 data 98 : rem TYA875 data 7D,00,C3: rem ADC C300,X
878 data 85,FD : rem STA FD
880 data C0,0A : rem CPY #0A
882 data F0,0F : rem BEQ 899
884 data A6,FB : rem LDX FB
886 data DE,00,C4: rem DEC C400,X
889 data A6,FC : rem LDX FC
891 data DE,00,C4: rem DEC C400,X
894 data A6,FD : rem LDX FD
896 data DE,00,C4: rem DEC C400,X
899 data 88 : rem *DEY
900 data F0,B8 : rem BEQ 830
902 data C6,FB : rem DEC FB
904 data C6,FC : rem DEC FC
906 data C6,FD : rem DEC FD
908 data A6,FB : rem LDX FB
910 data BD,00,C4: rem LDA C400,X
913 data D0,F0 : rem BNE 899
915 data A6,FC : rem LDX FC
917 data BD,00,C4: rem LDA C400,X
920 data D0,E9 : rem BNE 899
922 data A6,FD : rem LDX FD
924 data BD,00,C4: rem LDA C400,X
927 data D0,E2 : rem BNE 899
929 data FE,00,C4: rem INC C400,X
932 data A6,FC : rem LDX FC
934 data FE,00,C4: rem INC C400,X
937 data A6,FB : rem LDX FB
939 data FE,00,C4: rem INC C400,X
942 data B9,00,C8: rem LDA C800,Y
945 data A0,00 : rem LDY #00
947 data 91,B2 : rem STA (B2),Y
949 data E6,FE : rem INC FE
951 data A4,FE : rem LDY FE
953 data BE,00,C7: rem LDX C700,Y
956 data D0,8D : rem BNE 843
958 data 60 : rem *RTS
1000 rem ***** Dificil *****
1010 data 5.2......
1020 data ....6.9..
1030 data .........
1040 data .41..7...
1050 data ...5...6.
1060 data ..5..2...
1070 data .97.85...
1080 data .......35
1090 data .54....96
1500 rem ***** Facil *****
1510 data ....76...
1520 data 1...3874.
1530 data .7.......
1540 data ..4.6.5.1
1550 data .67...28.
1560 data 3.1.4.6..
1570 data .......1.
1580 data .2561...9
1590 data ...98....
No hay comentarios