Cómo resolver la programación de Sudoku
Código adicional:
tipo x9
Entero(1)::a
Entero(1)::s(9)
Entero(1)::np
Tipo final
Tipo(x9)::kk(9,9)
Datos kk%a/? &
0, 0, 0, 0, 4, 0, 0, 3.
0, 0, 0, 6, 0, 8, 0, 5, 0.
8, 0, 7, 0, 3, 0, 6, 0, 0.
0, 0, 1, 0, 0, 9, 7, 0.
0, 5, 0, 9, 6, 3, 0, 2, 0.
0, 1, 2, 0, 0, 0, 0, 8.
0, 0, 5, 0, 2, 0, 4, 0, 7.
0, 8, 0, 3, 0, 9, 0, 0, 0 y
1,0,0,4,0,0,0,0, 0 /
kk%np=-kk%a
hacer i=1, 9
hacer j=1, 9
? kk(j,i)%s=0
? Si (kk(j,i)%np.eq.0) entonces
? hacer k=1, 9
hacer il=1, 9
if(kk(il,i)%a.eq.k) salir
Fin hacer
if(il . 1 . 9) bucle
hacer ih=1, 9
if(kk(j,ih)%a.eq. k) Salir
Fin de hacer
Circuito de frecuencia intermedia (menor o igual a 9)
ni=((i+2)/3-1) *3+1
nj=((j+2)/3-1)*3+1
hacer ih=ni, ni+2
hacer il=nj ,nj+2
? if(kk(il,ih)%a.eq.k) salir
Fin do
if(il.le.nj+2) salir
Fin del bucle do
if (es decir, ni+2)
si (es decir, nj+2) bucle
kk(j,i)%s(k) =k
? ¿Finalizar?
? ¿Otros
? kk(j,i)%s(1)=kk(j,i)%a
? Terminará si...
Fin do
Fin do
n=1
kk%a=0
kk%np=0
m=0
hacer mientras(.true)
Salir si (mayor que 81)
i=(n+8)/9
j=n-9*(i-1)
kk(j,i)%np=kk(j, i)% np+1
k=kk(j,i)%np
Si (k > 9), entonces
? Si (n.eq.1) sale
? kk(j,i)%a=0
? n=n-1
? Bucle
¿Otro
? kk(j,i)%a=0
Terminará si...
Si (kk(j,i)%s(k).eq.0) entonces
p>? Bucle
¿Otro
? ¿ih=1,I
? if(kk(j,ih)% a. eq kk(j,i)%s(k)) salir
? ¿Finalizar?
? ¿Bucle de media frecuencia
? hacer il=1,j
? if(kk(il,I)% a . eq kk(j,i)%s(k)) salir
? ¿Finalizar?
? bucle if(il.le.j)
? ni=((i+2)/3-1)*3+1
? nj=((j+2)/3-1)*3+1
? ¿ih=ni,I
? ¿il=nj, nj+2
if(kk(il,ih)% a . eq kk(j,i)%s(k)) sale
? ¿Finalizar?
? if(il.le.nj+2) salir
? ¿Finalizar?
? if (es decir, nj+2) bucle
? ¿Bucle de media frecuencia
? kk(j,i)%a=kk(j,i)%s(k)
? Si (Ecuación 81), entonces
? m=m+1
? Escribe (*, '(/, 2x, a, i3)') 'buscar = ', m
? hacer jj=1, 9
Escribe (*, '(1x, 9i
2)')kk(1:9,jj)%a
? ¿Finalizar?
? ¿Otros
? n=n+1
? i=(n+8)/9
? j=n-9*(i-1)
? kk(j,i)%np=0
? ¿Bucle
? Si... terminará
Si... terminará
Fin hacer
Fin