IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

code de sudoku en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    etudiante
    Inscrit en
    Octobre 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : etudiante
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 61
    Par défaut code de sudoku en c
    bjr,
    j'ai comme projet d'ecrire le code de résolution d'une grille sudoku,que dois je avoir comme acquis en c? et par où commencer?
    merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    dans le cas de vérification d'une grille de sudoku, les seules choses qui me semblent utiles sont
    - les règles du jeu..
    - les tableaux (à tailles fixes - ça devrait suffire, sinon ajouter la dimension)
    - écrire des for
    - écrire des if
    - écrire et appeler une fonction (pour simplifier le code)

    Après, s'il te faut un programme qui soit capable de remplir une grille, les notions sont les mêmes. Seule leur utilisation va changer.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    J'ai eu en DS d'initiation à l'algorithmique de 1ère année, la validation d'une grille de sudoku. Ce n'est pas très compliqué et je ne vois rien à rajouter à ce qu'à dit Bousk.

    En revanche, si ton programme doit remplir une grille initiée, tu as un plus gros travail d'algorithmique à faire (mais ça doit se trouver sur le net). Il te faut peut-être savoir faire une fonction récursive.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par rota90 Voir le message
    et par où commencer?
    Salut

    J'ai déjà programmé ça (en C++)
    Mon algo qui fonctionne en 2 temps
    1) boucle sur chaque case du jeu
    - je regarde tous les chiffres qui peuvent aller sur la case
    - s'il n'y a qu'un seul chiffre possible alors c'est bon
    2) boucle sur chaque ensemble (chaque ligne, chaque colonne, chaque zone 3x3)
    - je prends un chiffre de 1 à 9 et je regarde sur quelles cases de l'ensemble il peut aller
    - s'il ne peut aller que sur une seule case de l'ensemble, alors c'est bon

    Et tant que au-moins une case positionnée je recommence boucles 1 et 2

    Il existe toutefois certaines grilles avancées où cet algo ne suffit pas. J'ai donc rajouté ensuite l'algo "brute force" qui fonctionne en récursif où je prends la première case de libre et je boucle sur tous les chiffres possibles de cette case. Je place donc le premier chiffre et je relance l'algo en récursif. S'il arrive à tout remplir alors c'est bon...
    Donc une fois que l'algo 1+2 atteint ses limites (quand il n'arrive plus à rien placer) alors j'enchaine sur l'algo brute force...

    J'ai aussi programmé le générateur de grilles
    Je génère avec le brute force une grille complète.
    Puis, pour chaque chiffre de la grille, je l'enlève et je regarde si on peut le retrouver avec l'algo 1+2.
    Et je recommence tant que je peux enlever des chiffres...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Javais pas mal réfléchi il y a quelques mois pour faire un jeu de sudoku pour m'initier à la programmation sous Android (finalement, j'ai fait un démineur en Qt sur PC, rien à voir). Je m'étais alors demandé : comment faire si (pour reprendre les termes du post précédent) les algos 1 et 2 ne suffisent pas. J'ai la confirmation qu'il faut bourriner

    Ma question : dans une grille standard (comme je trouve tous les jours dans 20 Minutes ou Metro), est ce que tu as souvent besoin de bourriner ? (à noter que je sais à peine jouer à ce truc, je connais juste les règles...)

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Javais pas mal réfléchi il y a quelques mois pour faire un jeu de sudoku pour m'initier à la programmation sous Android (finalement, j'ai fait un démineur en Qt sur PC, rien à voir). Je m'étais alors demandé : comment faire si (pour reprendre les termes du post précédent) les algos 1 et 2 ne suffisent pas. J'ai la confirmation qu'il faut bourriner

    Ma question : dans une grille standard (comme je trouve tous les jours dans 20 Minutes ou Metro), est ce que tu as souvent besoin de bourriner ? (à noter que je sais à peine jouer à ce truc, je connais juste les règles...)
    Non. Les grilles standard se résolvent par la méthode standard.
    Le brute force ne se justifie que dans les grilles des petits bouquins spécifiques et uniquement pour les niveaux hard.

    Ca m'intéresse ton démineur en Qt (pas pour le démineur mais pour me perfectionner en Qt). De mon coté je peux te filer un sudoku en Qt (pas fait par moi mais par un gars qui m'a abandonné le truc) et un "compte est bon" en PyQt...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut Qt
    Citation Envoyé par Sve@r Voir le message
    Ca m'intéresse ton démineur en Qt (pas pour le démineur mais pour me perfectionner en Qt). De mon coté je peux te filer un sudoku en Qt (pas fait par moi mais par un gars qui m'a abandonné le truc) et un "compte est bon" en PyQt...
    Salut !

    Si tu es intéressé par mon démineur en Qt, tu pourras trouver les sources sur ma page GitHub : https://github.com/bktero/ . J'ai aussi fait une application (ma 1ère en Qt) où j'interagis avec une base de données SQLite pour gérer ma collection de disques. Les sources sont aussi sur mon GitHub.

    Je ne suis pas une brute en Qt ni en C++, tu ne trouveras peut-être pas le code le plus élégant et efficace de la terre ^^ En tout cas, je suis preneur de toute remarque et idée. Si tu es membre de GitHub, tu peux directement commenter sur le site.

    Bonne journée.
    Pierre.


    PS : je veux bien le sudoku en Qt STP ! Pour le compte est bon, je ne connais ni le principe du jeu ni Python, mais tu as un lien avec les sources, je jetterai aussi un oeil.

  8. #8
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut @rota90
    si tu veux t'instruire : http://cgi.cse.unsw.edu.au/~xche635/dlx_sodoku/.
    c'est un programme un peu gourmand en espace mémoire, mais assez rapide en résolution.

    A+

  9. #9
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut
    salut !
    pour un générateur de grille, il faut en plus vérifier qu'il n'y a qu'une seule solution ...

    A+

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par anacharsis Voir le message
    salut !
    pour un générateur de grille, il faut en plus vérifier qu'il n'y a qu'une seule solution ...
    C'est implicite avec mon algo.
    Une fois la grille remplie, j'enlève 1 chiffre. Fatalement mon algo 1+2 arrive à le replacer.
    J'enlève ensuite un second chiffre. Si mon algo 1+2 arrive à le replacer ça veut dire que le premier chiffre enlevé ne peut pas aller à sa place.
    J'enlève un 3° chiffre. Si l'algo 1+2 arrive à le replacer ça veut dire qu'il est le seul possible et qu'aucun des deux autres n'y allait. Et etc etc...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. problème de code sudoku
    Par sassi1985 dans le forum C
    Réponses: 4
    Dernier message: 10/04/2012, 08h58
  2. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  3. Sudoku : je n'ai pas compris le code
    Par sidahmed dans le forum Prolog
    Réponses: 3
    Dernier message: 12/03/2007, 00h01
  4. Explorateur de code C
    Par Zero dans le forum C
    Réponses: 14
    Dernier message: 06/06/2002, 09h41
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo