1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

SUDOKU alguem me pode ajudar!!

Discussão em 'Programação' iniciada por brokss, 17 de Novembro de 2005. (Respostas: 12; Visualizações: 3343)

  1. Eu preciso elaborar um programa em pascal que consiste no jogo do sudoku e tens as seguintes caractristicas;:

    -tem k ser composto uma grelha quadrada com 81 celulas(9 colunas e 9 linhas)
    -tem que se preencher um numero pre-definido de celulas, com valores inteiros entre 1 e 9.
    -tem que se obter uma listagem, onde para cada uma das celulas, conste o valor atribuido ou, caso a mesma nao tenha sido preenchida, os valores que poderaõ ser atribuidos

    o preenchimento destas celulas deve respeitar as regras do sudoku, ou seja,
    -inexistência de valores repetidos na mesma linha e ou coluna.
    -inexistência de valores repetidos em cada sub-celula(3 por 3).

    se alguem me pudesse ajudar agradecia imenso!
     
  2. dElpH!

    dElpH! 1st Folding then Sex

    para o primeiro ponto , crias um array de 9*9.

    Depois tens que criar o algoritmo que preencha a grelha toda e fique guardada em memoria.

    Mostras so x valores na grelha quando tiver preenchida comparas com a tua 1 a ver se está certo.

    assim por alto acho que está +\-

    []'s
     
  3. nmd

    nmd Power Member

    Esta página ajuda-te no teu problema

    - eddaardvark.co.uk/sudoku/sudokuindex.html
     
  4. dr_tuborg

    dr_tuborg Power Member

    isso em PERL é simples....:002:
     
  5. Seavoices

    Seavoices Power Member

    Mesmo em pascal é muito fácil, e também a implementação das regras.

    Crias uma matrix bidimensional (x,y) para a matriz de 9x9

    Para a regra das linhas, podes efectuar a regra da soma, ou seja, tendo a linha toda os número de 1 a 9, a soma total TEM DE SER 45. Logo, se o número for inferior ou superior, a linha tem de ter numeros repetidos. Mas isto só pode gerar erro se a linha estiver completa. E o mesmo podes utilizar para as colunas. Basta utilizares um ciclo FOR e IF

    Utilizas uma função de RANDOM para preencheres alguns números. Perguntas quantas casas queres preenchidas (em 81) e depois, com IF para a função principal e RANDOMS para a linha x e coluna Y (X e Y não se podem repetir) consegues preencher aleatoriamente os quadrados do Sudoku

    Espero que ajude! Utiliza a imaginação
     
    Última edição: 28 de Novembro de 2005
  6. Warrior

    Warrior Power Member

    Não se pode preencher pela soma, porque pode tar 45 e repetirem-se numeros.. exemplo:

    9
    9
    6
    6
    5
    4
    3
    2
    1

    Não é uma coluna válida, mas a soma é 45
     
  7. PrOdG

    PrOdG Power Member

    E acho que também não é assim tão fácil para preencher as casas que dás ao início. Tens de garantir que, com o número de casas dadas, é possível resolver o problema (sinceramente não sei como fazer isso).
     
  8. Sadino

    Sadino I'm cool cuz I Fold

    Pode ser que isto ajude :)
     
  9. class CCasa{
    public:
    bool ocupada;
    int valor;
    bool possivel;
    int possibilidades[9];
     
  10. Tens de criar uma classe mais ou menos parecida com a seguinte, depois de fazeres a implementação crias um array de de objectos deste tipo, e já está.

    class CCasa{
    public:
    bool ocupada;
    int valor;
    bool possivel;
    int possibilidades[9];
    //construtor inicializa a casa a zero
    CCasa();
    void ver_casa(CCasa *casa);
    int contagem(CCasa *casa);
    };
     
  11. :joker: Desculpa lá que te respondi em dando-te um exemplo em C++. Mas espero que te ajude na mesma. Bom Natal.
     
  12. Warrior

    Warrior Power Member

    Existem casos que esse programa nao resolve... Ou melhor, existem casos que ele resolve, uma vez que ele só trata os casos básicos.
    Nem pares resolve..
     

Partilhar esta Página