Jump to content

preciso de ajuda.. sudoku!


Recommended Posts

Posted

A comunidade Portugal-a-Programar dá as boas vindas ao membro Hurricane.

Então és mais um dos que quer fazer um programa com o sudoku...óptimo. Deves ter consciencia que já deves ter alguma experiencia na programação em C, porque o jogo do Sudoku não é assim tão fácil de programar.

Aconselho-te vivamente a leitura desta página do Wikipedia. Certamente vais solucionar muitas duvidas através a leitura da mesma...

Depois é fazer tal como o vbmaster disse: pesquisar um pouquinho que nós aqui no forum já temos alguma informação acerca desse assunto.

Cumps

Posted

Se quiseres posso-te arranjar um gerador e um resolverdos feitos em c, mas acho que era mais util implementares tu um algoritmo.

O metodo e relativamente simples eu fiz um ha pouco tempo:

Controis um array tri-dimensional de inteiros de 9x9x9 casas:

As primeiras 9x9 sao as casa do sudoku e as ultimas sao os 9 sao os 9 numeros que cada casa pode ter.

Entra a situacao inicial. Precorres os array e nas casas correnspondentes aquelas preenchidas na situacao inicial so deixas os numeros que la estao. A partir daqui e um ciclo que so acaba ate teres o puzzle resolvido.

1º Passo - Encontras o primeiro numero que esteja sozinho e percorres todas as casas e eliminas os numeros incompativeis por estarem na mesma linha coluna ou quadrado que esse.

2º Passo procuras um novo numero e xecutas de novo o primeiro passo

quando chegares a casa 9x9 voltas ao inicio

Convem manter uma mapa (que pode ser outro array bidimensional mas desta vez de booleans) das casas que ja foram testadas pois se tiveres de testar a mesma casa duas vezes o puzzle nao tem solucao (pelo menos foi o que aconteceu nos meus casos mas nao tenho a prova matematica 😄 ).

Posted

depois de ler este topico fiz o jogo. Nao vou estar aqui a meter o programa pk assim nao irias aprender nada, mas tambem nao colocaste nenhuma questao por isso em nada te posso esclarecer.

coloca aqui as tuas duvidas para o pessoal te ajudar, acho que é injusto estar-te a fazer o programa e colocar aqui para apenas teres que faze copy paste.

Posted

Eu por acaso tb tenho a msma duvida. e já vi k há aki pessoal k sabe fazer. Eu tb não digo k ponham aki o codigo td. Não é necessario. No enanto gostava de ver como é k o programa coloca os numeros nos espaços vazios. kal é a logica usada para por um numero e não outro kk? Era isto k eu gostava d ver, se possivel com uma pekena explicação, pois o k me interessa é tirar ideias para fazer o meu proprio programa e não um copy-paste.

Agradecia que me ajudassem 😄

Posted

Podes começar pela lógica mais simples:

Percorre o tabuleiro todo, sempre que encontra um espaço vazio vai percorrer a linha/coluna e quadrado a que essa posição pertence. Sempre que encontra um numero retira esse numero das hipoteses para essa posiçao, quando ficar apenas com 1 numero como hipotese é esse o número que devem colocar nessa posiçao.

Um exemplo

0 4 0 0 1 3 0 0 6

0 5 7

2 0 0

8

0

2

0

0

0

Queremos descobrir o numero que se deve colocar no lugar que esta a bold:

1º as possibilidades iniciais sao 1 2 3 4 5 6 7 8 9

2º percorres as posiçoes na horizontal e no final tens apenas as seguintes possibilidades: 2 5 7 8 9

3º percorres na vertical. hipoteses: 7 9

4º analisas o quadrado. hipoteses 9

para a posiçao (1,1) o número é o 9

Depois de fazer o programa desta maneira se quiseres que ele realmente resolva todos os sudoku's vais ter que fazer um programa que analise também os espaços em branco mas isso ja é mais complicado de explicar.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.