begin process at 2012 02 05 05:38:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > ALGO RÉSOLUTION DE SUDOKU.

ALGO RÉSOLUTION DE SUDOKU.


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :Sudoku, Programmation, Algo, Console, Source Niveau :Initié Date de création :10/05/2009 Vu :5 509

Auteur : mamsk00

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Bonjour,

ben voici mon algo de résolution d'un sudoku que j'ai utiliser pour mon programme SudoBrol.

Voila, j'aimerais avoir vos avis.




Source

  • //-----------------------------------------
  • // Vérification des lignes et des colonnes.
  • //-----------------------------------------
  • int ligne, colonne, pave, erreur=0;
  • for(int a=1; a<=9; a++)
  • {
  • for(int b=1; b<=9; b++)
  • {
  • ligne=0;
  • colonne=0;
  • for(int c=1; c<=9; c++)
  • {
  • if(b==sudoku[a][c])
  • {
  • ligne++;
  • }
  • if(b==sudoku[c][a])
  • {
  • colonne++;
  • }
  • if(ligne>1||colonne>1)
  • {
  • erreur++;
  • }
  • }
  • }
  • }
  • //-----------------------------------------
  • // Vérification des pavés.
  • //-----------------------------------------
  • for(int a=0; a<=6; a+=3)
  • {
  • for(int b=0; b<=6; b+=3)
  • {
  • for(int c=1; c<=9; c++)
  • {
  • pave=0;
  • for(int d=1+b; d<=3+b; d++)
  • {
  • for(int e=1+a; e<=3+a; e++)
  • {
  • if(c==sudoku[d][e])
  • {
  • pave++;
  • }
  • if(pave>1)
  • {
  • erreur++;
  • }
  • }
  • }
  • }
  • }
  • }
  • //-----------------------------------------
//-----------------------------------------
// Vérification des lignes et des colonnes.
//-----------------------------------------

    int ligne, colonne, pave, erreur=0;

    for(int a=1; a<=9; a++)
    {
        for(int b=1; b<=9; b++)
        {
            ligne=0;
            colonne=0;

            for(int c=1; c<=9; c++)
            {
                if(b==sudoku[a][c])
                {
                    ligne++;
                }
                if(b==sudoku[c][a])
                {
                    colonne++;
                }
                if(ligne>1||colonne>1)
                {
                    erreur++;
                }
            }
        }
    }

//-----------------------------------------
// Vérification des pavés.
//-----------------------------------------


    for(int a=0; a<=6; a+=3)
    {
        for(int b=0; b<=6; b+=3)
        {
            for(int c=1; c<=9; c++)
            {
                pave=0;

                for(int d=1+b; d<=3+b; d++)
                {
                    for(int e=1+a; e<=3+a; e++)
                    {
                        if(c==sudoku[d][e])
                        {
                            pave++;
                        }
                        if(pave>1)
                        {
                            erreur++;
                        }
                    }
                }
            }
        }
    }

//-----------------------------------------



 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip Source avec une capture BEAT DETECTION par barsichou
Source avec Zip CARNET D'ADRESSE MODE CONSOLE par chikusa
Source avec Zip Source avec une capture RÉSOLUTION SUDOKU (9X9) PAR BACKTRACKING RÉCURSIF INTELLIGEN... par Gallien69
Source avec Zip SNAKE CONSOLE par fboivin63

Commentaires et avis

Commentaire de mamsk00 le 10/05/2009 23:36:43

Je pourrais boucler les boucles à la moindre erreur mais je voulais savoir le nombre d'erreur sur la grille.

Commentaire de marik7335 le 11/05/2009 14:07:49 10/10

Serait-il possible d'avoir l'exécutable dans le zip, s.v.p ? Je n'ai pas de compilateur sous la main pour tester.
Marik7335.

Commentaire de gaumerie le 11/05/2009 16:19:02

Ca ne résoud rien, si?

Commentaire de mamsk00 le 11/05/2009 16:22:11

Ben si lol, une fois les boucles fini, il suffit de tester la variable erreur pour savoir si la grille respecte la règle du sudoku ou pas.

Commentaire de gaumerie le 11/05/2009 16:30:55

Ah ok je viens de comprendre! J'ai pas testé mais je suppose que tu l'as fait et moi en tout cas ca me semble correcte. Mais j'avais fait il y a longtemps un programme de résolution de sudoku et ca utilisait un système de masques, qui je crois est beaucoup plus rapides (beaucoup moins de tests). Ici, pour un programme de vérification comme le tien, il y a surement moyen d'utiliser un système de masques aussi et ca serait quand meme beaucoup mieux.

Commentaire de mamsk00 le 11/05/2009 17:13:26

Oui l'algo marche très bien, je l'utilise dans mon programme SudoBrol.

Commentaire de gaumerie le 11/05/2009 17:16:54

Tu fais quand même 18 tests par case. Il y a moyen de ne faire que 3 tests par case si je ne me trompe pas

Commentaire de Chubab le 19/05/2009 15:47:56

Je dirais simplement que c'est plus un algo de verification qu'un algo de resolution...
Si tu as un sudoku "neuf" cet algo ne le rempliras pas...

Si ton but est simplement de verifier et que tu veux etre optimale le mieux selon moi serais d'avoir un array chiffre[9] et que pour admettons chaque ligne tu fais chiffre[sudoku[a][b]]++ et tu tu verifie par le fait meme, en t'assurant de ne pas depasser 1, tout les chiffres d'une meme ligne d'un seul coup...

Tu dois ensuite repeter pour chaque colonnes et chaques paves, mais c'est deja beaucoup plus rapide!

Commentaire de mamsk00 le 19/05/2009 16:35:50

Mon code est très bien comme ca pour le moment, je l'utilise dans mon programme SudoBrol. Je poseterais l'algo de génération plus tard. Pour ceux qui voudrais SudoBrol envoyer moi un mail mamsk@live.be

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

algo ou source ? [ par JoebarGlut ] Salut, Je suis en train de coder mon premier jeu en mode multijoueur en LAN et j'aurais une ou deux kestions algorithmiques.1- doit-il forcement y avo Equivalences C/C++ [ par ndubien ] Bonjour,Existe-t'il un équivalent de clrscr (); en programmation c++ console ?Existe-t'il un équivalent de gotoxy (x,y); < Programmation multilingue suite [ par VinceVG ] SalutJe souhaite traduire un source cpp. Plus précisemment je souhaiterais que a traduction se trouve dans un fichier texte (de type .ini par exemple) Windows XP + programmation console [ par mondrone ] Salut. Je voudrais savoir si Windows XP n'est pas l&#233;g&#232;rement incompatible avec les programmes en mode console, car depuis le temps que je pr Sudoku en langage C [ par Bavimo ] Bonjour. Il y a quelques semaine j'avais signalé le site http://www.i2i.fr dans lequel je mettais à disposition un source en C qui résoud les grilles PROGRAMMATION CPP MAIS PAS EN MODE CONSOLE [ par COLLECTION ] Bonjour j'aimerais savoir si il exixte un livre sur la programmation windows avec devcpp qui expliquerait tout les apis windowsainsi que la creation d compiler une source c ou c++ [ par darksool93 ] Bonjour j'ai téléchargé crypcat que j'ai essayé de compiler pour obtenir l'exe avec microsoft 2010 express mais ça me donne pleins d'erreurs. y-a-t-il programmation GSM en C++ [ par manuelsigannel ] Salut a tous S'il vous plait quelqu'un pourrait il m'aider avec un programme en c++ qui permet d'envoyer un SMS a un telephone portable via le port LP


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,574 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales