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

Algorithmes et structures de données Discussion :

Génération d'une grille de sudoku


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Génération d'une grille de sudoku
    Bonjour,
    Après deux jours de travaille j'ai réussi à gréer un générateur de grille de sudoku et maintenant je désire savoir comment faire pour vider les bon cellules afin que le jeu aura une solution.

    Merci d'avance pour toute réponse;
    Amir.

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Je ne comprend pas bien ta question.

    Si tu pars d'une grille valide, tu sais qu'en enlevant des nombres de cette grille tu as toujours un moyen d'obtenir la grille de départ (même dans le cas où tu laisses uniquement un chiffre)

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    La grille généré est 100% valide ma question est par exemple combien de case dois je vidé parce que si je ne laisse QU'UNE seul case le joueur na aucune chance de trouver la solution (la grille d'origine).

    Bonsoir,
    Si quelqu'un connait un moyen pour vider les bon cellules d'une grille valide afin d'obtenir un jeux de sudoku valide merci de laisser un message c'est très urgent, et puis je voudrais savoir comment doit on faire pour créer un systeme de gestion de niveau (facile, moyen, difficile).
    Merci.

    Après quelques recherches j'ai pensé a une simple solution.
    D'abord créer un solutionneur de grille puis d'enlever un nombre aléatoire de la grille et de tester si le jeu a une solution et ainsi de suite jusqu'a par exemple avoir vidé 55 cellules pour le niveau facile et 60 pour le niveau moyen et 65 pour le niveau difficile.
    Que pensez-vous ?

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Amiraamir Voir le message
    D'abord créer un solutionneur de grille puis d'enlever un nombre aléatoire de la grille et de tester si le jeu a une solution
    Le jeu aura forcement une solution : il suffit de remettre le nombre que tu viens de retirer.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Expert éminent sénior

    Avatar de Djug
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    2 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 980
    Points : 17 970
    Points
    17 970
    Par défaut
    peut être la question qui doit être posée est la suivante:

    combien de case doit-on supprimer pour avoir la difficulté (débutant-intermédiaire -avancé)

    parce que plus on supprime des cases plus la grille sera plus difficile a résoudre

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Djug Voir le message
    peut être la question qui doit être posée est la suivante:

    combien de case doit-on supprimer pour avoir la difficulté (débutant-intermédiaire -avancé)

    parce que plus on supprime des cases plus la grille sera plus difficile a résoudre
    La difficulté est liée au nombre de CHOIX possibles pour les cases manquantes, à chaque étape la résolution. Ou plus exactement à la distribution de ces nombres.

    Exemple: Si à chaque étape tu as toujours une case avec un seul choix possible, tu ne peux donc pas te tromper. Le tout est de trouver parmi toutes les cases manquantes celle qui a un seul choix. Par contre, si à une étape toutes les cases ont au moins 2 choix... il faudra tester et peut-etre se tromper.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Premièrement merci pour toutes vos réponses puis :

    Citation Envoyé par pseudocode Voir le message
    Le jeu aura forcement une solution : il suffit de remettre le nombre que tu viens de retirer.
    Oui mais supposant qu'on vide par exemple 80 cellules, le jeux va avoir sans doute avoir une solution, plusieurs même, mais le problème se pose aux niveau de la résolution du joueurs de la grille, le joueurs ne peux jamais trouver la grille d'origine, c'est la qu'entre le jeux du solutionneur qui va travailler a la résolution de la grille d'une méthode classique comme le fait le joueur et si il trouve que la grille n'a pas qu'une SEUL solution il renvoie une erreur pour remettre le dernier nombre enlever et ainsi de suite.

  8. #8
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Solution bête et méchante.

    Tu pars de ta grille valide, tu supprimes un nombre, puis un autre et à chaque fois tu comptes le nombre de grille valide à partir de cette grille. Et dès que tu dépasse 1, il y aura un choix à faire entre deux grille valide donc tu peux t'arrêter avant.

    Notes au passage que la difficulté n'est pas directement liée au nombre de cases vide.

  9. #9
    Expert éminent sénior

    Avatar de Djug
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    2 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 980
    Points : 17 970
    Points
    17 970
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    Solution bête et méchante.

    Tu pars de ta grille valide, tu supprimes un nombre, puis un autre et à chaque fois tu comptes le nombre de grille valide à partir de cette grille. Et dès que tu dépasse 1, il y aura un choix à faire entre deux grille valide donc tu peux t'arrêter avant.
    mais cette opération va prendre beaucoup de temps ?

    Citation Envoyé par PRomu@ld Voir le message

    Notes au passage que la difficulté n'est pas directement liée au nombre de cases vide.
    peut être elle est liée aussi au emplacement de ces cases .

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    Tu pars de ta grille valide, tu supprimes un nombre, puis un autre et à chaque fois tu comptes le nombre de grille valide à partir de cette grille. Et dès que tu dépasse 1, il y aura un choix à faire entre deux grille valide donc tu peux t'arrêter avant.
    Je croie que c'est ce que j'ai dis ma solution consiste a enlever un nombre aléatoire de la grille et de vérifier si la grille a UNE SEUL solution si c'est le cas en continue a enlever d'autre nombre jusqu'a par exemple 55 pour le niveau facile 60 pour moyen et 65 pour le niveau difficile sinon si la grille va avoir plus d'une seul solution en remet le dernier nombre a sa place et en enlève un autre et ainsi de suite.

    Citation Envoyé par PRomu@ld Voir le message
    Notes au passage que la difficulté n'est pas directement liée au nombre de cases vide.
    Citation Envoyé par Djug Voir le message
    peut être elle est liée aussi au emplacement de ces cases .
    C'est sur mais d'après cette théorie quel solution peut on avoir afin de créer plusieurs niveau de difficulté ?, pour moi la meilleur (la seul) et de modifier le nombre de cases vides selon le niveau, mais si vous avez d'autre idées merci bien de me les indiquer.

  11. #11
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Amiraamir Voir le message
    C'est sur mais d'après cette théorie quel solution peut on avoir afin de créer plusieurs niveau de difficulté ?, pour moi la meilleur (la seul) et de modifier le nombre de cases vides selon le niveau, mais si vous avez d'autre idées merci bien de me les indiquer.
    En fonction des algo nécessaires pour résoudre la grille sans back-tracking? (Et si le back-tracking est nécessaire, c'est le niveau le plus difficile).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  12. #12
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Pour infos je suis débutant en programmation (en tout cas c'est normale par rapport avec mon âge) je voudrais savoir combien de ligne de codes à peu près un sudoku prendra avec le C# parce que actuellement mon programme fait plus de 1000 lignes.

  13. #13
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Pour infos je suis débutant en programmation (en tout cas c'est normale par rapport avec mon âge) je voudrais savoir combien de ligne de codes à peu près un sudoku prendra avec le C# parce que actuellement mon programme fait plus de 1000 lignes.
    En fait il n'est pas forcément possible de répondre objectivement à ta question. Tout dépend comment tu programmes, comment tu écris tes algorithmes, les fonctionnalités que tu proposes, bref plein de paramètres à prendre en compte.

    Citation Envoyé par Djug
    mais cette opération va prendre beaucoup de temps ?
    Je n'en sais rien, peut-être pas. Si le code est suffisamment propre, il ne doit pas falloir beaucoup de temps (quelques secondes tout au plus) pour trouver à partir de combien de cases tu as besoin de faire un choix.

  14. #14
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Pour la vérification du nombre de solution qui existe pour une grille après avoir vidé un certain nombre de ses cases je cherche des exemples d'algorithme possible pour résoudre se problème afin d'avoir quelques idées pour optimisée mon résonnement qui nécessite une grande quantité de codes.

    Merci.

Discussions similaires

  1. génération d'une grille de sudoku
    Par gnouz dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 25/09/2008, 15h44
  2. afficher une grille de sudoku Swing
    Par herbert8 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 03/10/2007, 00h42
  3. Comment résoudre une grille de Sudoku ?
    Par tarik_12 dans le forum Pascal
    Réponses: 1
    Dernier message: 25/04/2007, 20h31
  4. [VB6]Afficher une grille de Sudoku
    Par epaminondas dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 07/03/2006, 17h36

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