Hurricane Posted December 7, 2005 at 11:53 PM Report #8281 Posted December 7, 2005 at 11:53 PM 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 😄
vbmaster Posted December 8, 2005 at 12:34 AM Report #8283 Posted December 8, 2005 at 12:34 AM faz um search por sudoku e talvez encontres algumas dicas nalguns threads existentes. Fica bem 😄 ;)😄
deathseeker25 Posted December 8, 2005 at 12:43 AM Report #8286 Posted December 8, 2005 at 12:43 AM 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
jarsantos Posted December 8, 2005 at 03:03 AM Report #8288 Posted December 8, 2005 at 03:03 AM Qual é o formatado da informação que recebes no ficheiro? como é que ele esta escrito?
Dabubble Posted December 8, 2005 at 05:34 AM Report #8289 Posted December 8, 2005 at 05:34 AM 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 😄 ).
jarsantos Posted December 8, 2005 at 06:24 PM Report #8310 Posted December 8, 2005 at 06:24 PM 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.
MaskX Posted December 8, 2005 at 10:32 PM Report #8322 Posted December 8, 2005 at 10:32 PM 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 😄
jarsantos Posted December 9, 2005 at 03:36 AM Report #8333 Posted December 9, 2005 at 03:36 AM 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.
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