• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Hurricane

preciso de ajuda.. sudoku!

8 mensagens neste tópico

tenho k escrever um programa resolva o puzzle sudoku a partir de uma situaçao inicial guardada num ficheiro.. se alguem tiver alguma ideia ou sugestao k compartilhe fikaria agradecido :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

faz um search por sudoku e talvez encontres algumas dicas nalguns threads existentes.

Fica bem :D;):D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é o formatado da informação que recebes no ficheiro? como é que ele esta escrito?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :D).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora