GoodVibrationS Posted December 15, 2005 at 10:51 PM Report #8613 Posted December 15, 2005 at 10:51 PM Antes de mais quero desejar um bom natal e um feliz ano novo para o pessoal todo do forum. Agora vem a parte seria da questao ( pelo menos para mim ) Vinha pedir ajudar pois tenho um trabalho pa entregar na segunda para a Faculdade sobre o SUDOKU em PASCAL.... O objectivo do trabalho para nota 20 é conseguir fazer de maneira que o programa, apos serem dados os numeros que veem inicialmente no soduko, resolva automaticamente o jogo... Mas tb como o trabalho é mto puzado eu fico me apenas pelo 12 , que é fazer: 1- Fazer uma grelha com 81 celulas 2-utilizar as regras do sudoku de maneira que n haja o msm numero na msm linha ou na msm coluno e ainda ( o mais dificil de fazer, que eu ainda n consegui resolver neste trabalho) na mesma sub-grelha (3x3) 3- e aparecer em cada celula os numeros possiveis, que vao sendo iliminados enquanto se vai adicionando numeros novos 4- por ultimo escrever esses numeros logo na grelha em ves de pedir em que linha e coluno e qual o algarismos keremos colocar. Eu sei que é muito dificil mas se ó menos alguem conseguisse ou encontrasse na net a parte da resoluçao da sub-grelha e como trabalhar automaticamente na grelha principal eu agradecia msm mto. PS: se nao conseguir fazer isso ate segunda feira tenho d efazer a cadeira po ano pois o trabalho conta 50% da nota final PS2: se n perceberem mto bem o que eu quis dizer e tiverem interessados em ajudar digam me qq coisa Obrigado a todos Abraço
deathseeker25 Posted December 15, 2005 at 10:54 PM Report #8614 Posted December 15, 2005 at 10:54 PM Boas, Em primeiro lugar bem-vindo ao forum GoodVibrationS. Aqui vais obter ajuda com certeza, mas precisas de mostrar o código que já realizaste, visto que uma das regras desta casa e não fazer o trabalho pelos outros, muito menos quando se trata de formação de futuros profissionais. Posta lá o código que já fizeste e vamos fazer o nosso melhor... Cumps
vbmaster Posted December 15, 2005 at 11:15 PM Report #8616 Posted December 15, 2005 at 11:15 PM O mais fácil é mesmo detectar se há um número igual na mesma fila horizontal, vertical e quadrado 3*3. O algortimo de resolução é que não me entra na cabeça mesmo. Mas já temos alguma info de qualidade sobre sudoku no fórum, ao alcance de um search. 😛 Fica bem 😛 ;)😄
GoodVibrationS Posted December 15, 2005 at 11:28 PM Author Report #8618 Posted December 15, 2005 at 11:28 PM Aki fica a grelha, amanha a noite passo para aki o que eu ja tenho feito do programa So que eu tenho de por as linhas mais grossas de maneira que sobresaem as submatrizes e tenho de pintar a grelha mas com as submatrizes em cruz Aki fica a matriz principal: program SDK(input,output); uses crt, graph; var I {, Mode} :integer; CAD:String; procedure INIT(tinta, papel :byte); var GMODE, Gdrive:integer; begin Gdrive := DETECT; InitGraph(Gdrive, Gmode, ''); if GraphResult <> GrOK then Halt(1); setbkColor(papel); cleardevice; setcolor(tinta); end; procedure VERT(X,Y,L:integer); (* Traca segmento recto vertical. Origem em X,Y e comprimento L (pixels) *) begin line(X,Y,X,Y+L) end; procedure HORIZNT(X,Y,L:integer); (* Traca segmento recto horizontal. Origem em X,Y e comprimento L (pixels) *) begin line(X,Y,X+L,Y) end; (* procedure SetLineStyle (EstiloDaLinha, Padrao, Espessura :word); SolidLn = 0; DottedLn = 1; CenterLn = 2; DashedLn = 3; UserBitLn = 4; (estilo de linha definido pelo utilizador) Padrao e' ignorado a nao ser q EstililoDaLinha = UserBitLn e simultanea/ Espessura = NormWidth ou = ThickWidth NormWidth = 1; ThickWidth = 2; *) (* procedure SetTextStyle (Font, Direccao, TamanhoCaracter :word); DefaultFont = 0; TriplexFont = 1; ("stroked" fonts) SmallFont = 2; SansSerifFont = 3; GothicFont = 4; HorizDir = 0; (da esquerda p/ a direita) VertDir = 1; (de baixo p/ cima) TamanhoCaracter = 1, 2, ..., 10 (Tamanho NoRMAL= 1 p/ DefaultFont) ( = 4 p/ TriplexFont) *) begin (*inicio do Progr.Princ.*) INIT(15,0); for I:=1 to 10 do begin VERT(60*I,42,378); HORIZNT(60,42*I,540); end; { RestoreCrtMode; Clrscr; } { repeat until keypressed; } { RestoreCrtMode; writeln('Agora estah em modo TEXTO!'); readln; write('Premir <ENTER> p- entrar em modo Grafico!'); readln; SetGraphMode(GetGraphMode); ClearDevice; } SetLineStyle(SolidLn{EstiloDaLinha}, 0{Padrao}, ThickWidth); HORIZNT(60,42,540); { readln; } HORIZNT(60,168,540); { readln; } HORIZNT(60,294,540); { readln; } HORIZNT(60,420,540); { readln; } vert(60,42,378); { readln; } vert(240,42,378); { readln; } vert(420,42,378); { readln; } vert(600,42,378); { ClearDevice; } for I:=1 to 10 do begin SetTextStyle(DefaultFont, HorizDir, I); str(I:1,CAD); outtextxy(I*45,36,CAD); SetTextStyle(DefaultFont, HorizDir, 1); end; readln; CloseGraph end. PS: algumas partes tem a explicar pk isso foi tipo uma ficha que nos deram e disseram para acabarmos e colocarmos dps a funcionar com o resto do programa..... amanha ca estara o programa PS2: Fiz varios search, n so aki, e n encontrei mesmo nada que consiga me ajudar a resolver, pelo menos a parte onde n pode haver o msm numero na msm submatriz. Obrigado a Todos Abraço
GoodVibrationS Posted December 16, 2005 at 09:35 AM Author Report #8628 Posted December 16, 2005 at 09:35 AM Aqui ta entao o que ja fiz do programa.... Já fiz a eliminaçao de numeros repetidos nas linhas e colunas O problema agora é 1-a eliminaçao de numeros iguais na msm submatriz (3x3) 2- e ainda a utilizaçao do grafico ( grelha ) dentro do programa mostrando os numeros ainda possiveis, ou seja, trabalharmos, colocarmos os numeros ja na grelha.... PS: esta parte do trabalho que tenho de fazer é apenas parcial como ja tinha referido anteriormente ( nota 12 ), ou seja, mostrar os numeros possiveis, dentro de cada celula e nao a resoluçao completa do sudoku Aqui vai a parte do trabalho que fiz: Program SUDOKU; Uses CRT,graph; type cubo=array [1..9,1..9,1..9] of boolean; Var Semaforo:boolean; SouN:char; Iii,Nentradas,N,I,I1,J1,K1,J,K,dados1,ITab {, Mode} :integer; Sudo:cubo; A:cubo; CAD:String; {PASSWORD} Procedure password(var semaforo:boolean); Var Password:string; Begin Clrscr; Repeat Gotoxy(0,5);Write('Insira a Password ');Readln(Password); If (Password<>'Chacal') then Begin gotoxy(0,5);write('Incorrecto ') End; Writeln(password); until (Password='Chacal'); semaforo:=true; end; {Limpar Sudo} Procedure Limpacubo(var A:cubo); Begin Clrscr; For I:=1 to 9 do For J:=1 to 9 do For K:=1 to 9 do A[i,J,K]:=true; end; {Atribuir Valores} Procedure dados(var dados1:integer;var A:cubo); Var dados:integer; Begin Clrscr; Repeat Repeat Gotoxy(5,8);Write('':40); Gotoxy(5,8);Write('Quantos n§ vai introduzir? ');Read(N); Until N in [1..81]; For Iii:=1 to N do Begin Repeat Repeat Gotoxy(5,10);Write('Qual o ',Iii,' n§ da linha? (1-9) ');Read(I1); Until I1 in [1..9]; Repeat Gotoxy(5,12);Write('Qual o ',Iii,' n§ da coluna? (1-9) ');Read(J1); Until J1 in [1..9]; Repeat Gotoxy(5,15);Write('Qual o ',Iii,' algarismo? (1-9) ');Read(K1); Until (K1 in [1..9]); If (A[i1,J1,k1]=false) then Begin Gotoxy(5,20);Write('Introduziu um n§ inv lido, coloque outro n§'); End; Until (A[i1,J1,K1]=true); For K:=1 to 9 do If A[i1,J1,K]=true Then A[i1,J1,K]:=false; For J:=1 to J1-1 do If A[i1,J,K]=true Then A[i1,J1,K]:=false; For J:=J1+1 to 9 do For K:=1 to 9 do If A[i1,J,k]=true Then A[i1,J,K]:=false; For I:=1 to I1-1 do For K:=1 to 9 do If A[i,J1,K]=true Then A[i,J1,K]:=false; For I:=I1+1 to 9 do; For K:=1 to 9 do If A[i,J1,K]=true Then A[i,J1,K]:=false; Readln; end; Repeat Gotoxy(10,5);Write('Terminou entrada do problema? (s-n)');Readln(SouN); SouN:=upcase(SouN); Until SouN in ['S','N']; Until SouN='S' end; Procedure Intro; Begin Clrscr; Gotoxy(30,5);TextColor(lightGreen);Write('SUDOKU 2005'); Gotoxy(30,6);TextColor(Green);Write('SUDOKU 2005'); Gotoxy(30,7);TextColor(darkGray);Write('SUDOKU 2005'); Gotoxy(10,15);TextColor(Yellow);Write('Trabalho Realizado por:'); Gotoxy(12,16);TextColor(White);Write('Filipe Silva n§ 30316'); Gotoxy(12,17);Write('Joao Fidalgo n§ ......'); Gotoxy(12,18);Write('Helder Gon‡alves n§ ......'); Gotoxy(12,19);Write('Serginho n§ ......'); Gotoxy(20,24);Write(' PARA CONTINUAR PRIMA ENTER...'); Readln; end; Obrigado a todos Abraço
GoodVibrationS Posted December 17, 2005 at 09:31 AM Author Report #8651 Posted December 17, 2005 at 09:31 AM O trabalho ja avançou um bocado: Só falta a nular os msm numeros na submatriz e colocar a grelha no programa de maneira a que os quadrados com os numeros 123456789 fiquem dentro de todas as celulas. Outro problema que deve ser na parte do window dentro do programa é que so ta a aparecer no ecra as 3 primeiras linhas ( as outras tao la mas n aparecem Aqui ta o programa: Program SUDOKU; Uses CRT,graph; type cubo=array [1..9,1..9,1..9] of boolean; Var Semaforo:boolean; SouN:char; Iii,Nentradas,N,I,I1,J1,K1,J,K,L,C,dados1,ITab {, Mode} :integer; Sudo:cubo; A:cubo; CAD:String; {PASSWORD} Procedure password(var semaforo:boolean); Var Password:string; Begin Clrscr; Gotoxy(30,5);TextColor(lightGreen);Write('SUDOKU 2005'); Gotoxy(30,6);TextColor(Green);Write('SUDOKU 2005'); Gotoxy(30,7);TextColor(darkGray);Write('SUDOKU 2005'); Gotoxy(10,15);TextColor(Yellow);Write('Trabalho Realizado por:'); Gotoxy(12,16);TextColor(White);Write('Filipe Silva n§ 30316'); Gotoxy(12,17);Write('Joao Fidalgo n§ ......'); Gotoxy(12,18);Write('Helder Gon‡alves n§ ......'); Gotoxy(12,19);Write('Serginho n§ ......'); Repeat Gotoxy(20,24);Write(' PARA CONTINUAR INSIRA A PASSWORD...');Readln(Password); If (Password<>'Chacal') then Begin gotoxy(0,5);write('Incorrecto ') End; Writeln(password); until (Password='Chacal'); semaforo:=true; end; {Limpar Sudo} Procedure Limpacubo(var A:cubo); Begin Clrscr; For I:=1 to 9 do For J:=1 to 9 do For K:=1 to 9 do A[i,J,K]:=true; end; {Atribuir Valores} Procedure dados(var dados1:integer;var A:cubo); Var dados:integer; Begin Repeat Clrscr; Repeat Gotoxy(5,8);Write('':40); Gotoxy(5,8);Write('Quantos n§s vai introduzir? ');Read(N); Until N in [1..81]; For Iii:=1 to N do Begin Repeat Repeat Gotoxy(5,10);Write('Qual o ',Iii,' n§ da linha? (1-9) ');Read(I1); Until I1 in [1..9]; Repeat Gotoxy(5,12);Write('Qual o ',Iii,' n§ da coluna? (1-9) ');Read(J1); Until J1 in [1..9]; Repeat Gotoxy(5,15);Write('Qual o ',Iii,' algarismo? (1-9) ');Read(K1); Until (K1 in [1..9]); If (A[i1,J1,k1]=false) then Begin Gotoxy(5,20);Write('Introduziu um n§ inv lido, coloque outro n§'); End; Until (A[i1,J1,K1]=true); For K:=1 to 9 do A[i1,J1,K]:=false; For J:=1 to J1-1 do For k:=1 to 9 do A[i1,J,K1]:=false; For J:=J1+1 to 9 do For K:=1 to 9 do A[i1,J,K1]:=false; For I:=1 to I1+9 do For K:=1 to 9 do A[i,J1,K1]:=false; For I:=I1+1 to 9 do; For K:=1 to 9 do A[i,J1,K1]:=false; A[i1,j1,K1]:=true; Readln; end; Repeat Gotoxy(10,5);Write('Terminou entrada do problema? (s-n)');Readln(SouN); SouN:=upcase(SouN); Until SouN in ['S','N']; Until SouN='S'; Clrscr; for K:=1 to 9 do if a[i1,j1,k] = true then begin a[i1,j1,k]:=false; a[i1,j1,k1]:=true; end; for J:=1 to J1-1 do for k:=1 to 9 do if a[i1,J,K]=true then begin a[i1,J,K1]:=false; end; for J:=J1+1 to 9 do for K:=1 to 9 do if a[i1,j,k]=true then begin a[i1,j,k1]:=false; end; for I:=1 to I1-1 do for K:=1 to 9 do if a[i,j1,k]=true then begin a[i,j1,k1]:=false; end; for i:=i1+1 to 9 do for k:=1 to 9 do if a[i,j1,k]=true then begin a[i,J1,K1]:=false; end; Readln; clrscr; Repeat For I:=1 to 9 do Begin For J:=1 to 9 do BEgin Window(10+J*4,10+I*4,12+J*4,13+I*4); Begin For K:=1 to 9 do Begin If A[i,J,K]<> false Then Write(K) else Write(' '); end; end; end; end; Until I=9; Repeat Until Keypressed; end; { PROCEDURE Grelha(L,C:integer); VAR L,C:Integer; BEGIN C:=6; L:=2; Clrscr; Gotoxy(C,L+01); Write(' 1 2 3 4 5 6 7 8 9 '); Gotoxy(C,L+02); Write(' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»'); Gotoxy(C,L+03); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+04); Write('1º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+05); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+06); Write(' ºÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺ'); Gotoxy(C,L+07); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+08); Write('2º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+09); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+10); Write(' ºÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺ'); Gotoxy(C,L+11); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+12); Write('3º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+13); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+14); Write(' ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹'); Gotoxy(C,L+15); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+16); Write('4º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+17); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+18); Write(' ºÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺ'); Gotoxy(C,L+19); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+20); Write('5º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+21); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+22); Write(' ºÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺ'); Gotoxy(C,L+23); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+24); Write('6º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+25); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+26); Write(' ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹'); Gotoxy(C,L+27); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+28); Write('7º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+29); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+30); Write(' ºÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺ'); Gotoxy(C,L+31); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+32); Write('8º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+33); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+34); Write(' ºÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄĺ'); Gotoxy(C,L+35); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+36); Write('9º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+37); Write(' º ³ ³ º ³ ³ º ³ ³ º'); Gotoxy(C,L+38); Write(' ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ'); Readln; end; } Begin password(semaforo); Limpacubo(A); dados(dados1,A); end. PS: ta tb no programa, mas ta em parenteses outro tipo de grelha..... o problema é coloca la a trabalhar. se poderem ajudar agradecia bastante pois tenho de entregar na segunda feira o trabalho senao bem posso pensar em fazer a cadeira so po ano Obrigado Abraço
deathseeker25 Posted December 17, 2005 at 10:55 AM Report #8656 Posted December 17, 2005 at 10:55 AM Boas, Agora já podem usar as tags do syntax highlighting no forum, visto que o MOD já está instalado.
Warrior Posted December 17, 2005 at 11:17 AM Report #8663 Posted December 17, 2005 at 11:17 AM Vamos lá ajudar o rapaz a tirar um 20.. O meu trabalho de natal (11º ano) foi exactamente um programa que dado um sudoku o resolve. Este site foi a minha maior fonte de inspiração: http://eddaardvark.co.uk/sudoku/sudokuindex.html Atenção que não li o código postado pelo GoodVibrationS. Reparei que estava em modo gráfico, vou falar só do algoritmo. Consideremos que para a resolução do sudoku existem vários passos (vou tentar explicar sucintamente o que diz no site, e aplicar no pascal, aconselho que leiam o site na mesma) 1º Começamos com uma matriz 9*9 (declarada como string), onde em cada célula existe o valor '123456789' (ou seja, vamos começar com a matriz completa e eliminar os valores de que temos a certeza.) Fazemos isso no segundo passo. 2º Vou dar um exemplo: depois de sabermos que existe um "1" na célula [1,1], podemos elimina-lo na 1ª linha, na 1ª coluna e na 1ª subgrelha Como ja disseste que tinhas dificuldades em remover na 1ª subgrelha, posso-te explicar como fiz: um procedimento, que recebendo a informação da célula onde um numero vai ser colocado, e esse mesmo numero, remove tudo na matriz. Não tenho aqui o código mas algo do género (atenção que não testei nem tenho nenhum compilador à mão) procedure limpar(a:char;b,c:integer); //sendo "a" o numero, e "b" e "c" as suas coordenadas na matriz (x,y) var i,l,k,y,z:integer; begin //eliminar "a" em toda a sua linha, notem que o procedimento é recursiva caso ao eliminar o "a" ele fique sozinho (se ao eliminar o "1" na ultima coluna, ela ficasse só com o "3", eliminariamos o "3" na primeira linha, ultima coluna e no subgrupo [1,3] for i:=1 to 9 do if ((pos(a,matriz[b,i])>0) and (i<>c)) then begin delete(matriz[b,i],pos(a,matriz[b,i]),1); if length(matriz[b,i])=1 then limpar(matriz[b,i],b,i); end; //constrois processo semelhante para eliminar na coluna ... //eliminar no subgrupo if ((b<=3) and (b>=1)) then l:=1; if ((b<=6) and (b>=4)) then l:=4; if ((b<=9) and (b>=7)) then l:=7; if ((c<=3) and (b>=1)) then k:=1; if ((c<=6) and (b>=4)) then k:=4; if ((c<=9) and (b>=7)) then k:=7; w:=l+2; z:=k+2; for l:=l to w do for k:=k to z do if ((pos(a,matriz[l,k])>0) and ((l<>b) and (k<>c)) then begin delete(matriz[l,k],pos(a,matriz[l,k]),1); if length(matriz[l,k])=1 then limpar(matriz[l,k],l,k); end; end; Este procedimente é semelhante ao que criei. Provavelmente vais ter alguns erros para corrigir pois não tenho aqui compilador e não o testei. A lógica está lá. 3º Esta fase é mais dificil de perceber, mas consideravelmente fácil de implantar. Suponhemos que numa coluna, encontravamos os seguintes valores possiveis e ja encontrados: 3567 8 36 1 579 4 56 357 2 Apesar de na 5ª linha, existirem várias hipoteses, sabemos que teremos que colocar lá o 9, pois é a unica hipotese de ele aparecer nessa coluna. Depois de o fazer, aplicaríamos o passo atrás. -> limpar('9',5,4) 4º Esta é a parte onde entram os pares e as triplas (quem resolve sudokus à mão deve estar familiarizado com este conceito) Leiam esta parte do site ( http://eddaardvark.co.uk/sudoku/sudokusolver.html#Pairs ) e não devem restar dúvidas Espero que tenha ajudado.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now