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

Delphi Discussion :

[Défi] Le Défi Delphi n°5 : Le Sudoku solver


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut [Défi] Le Défi Delphi n°5 : Le Sudoku solver
    Bonjour,

    L'équipe d'Animation vous propose son 5ème défi !

    I. Le sujet de ce cinquième défi

    Le défi nous est lancé par Félix Guillemot. Il s’agit de réaliser un solveur de grilles de Sudoku.

    Merci à Félix Guillemot de nous avoir proposé ce défi !

    I-A. Le Sudoku

    Est-il encore nécessaire de présenter le Sudoku ?

    Le jeu se déroule sur une grille de 9x9, elle-même divisée en 9 sous-grilles de 3x3.
    Le but est de remplir la grille avec des nombres de 1 à 9, tout en respectant les contraintes suivantes :
    • Chaque nombre doit figurer une et une seule fois par ligne.
    • Chaque nombre doit figurer une et une seule fois par colonne.
    • Chaque nombre doit figurer une et une seule fois par sous-grille.


    I-B. Pré-requis

    Pour réaliser ce défi, une simple édition personnelle de Delphi suffit. Pas besoin d'avoir les bibliothèques spécifiques aux versions Pro/Entreprise/Architecte !
    Certaines versions personnelles de DELPHI sont disponibles au téléchargement dans la page téléchargement de la rubrique DELPHI de www.developpez.com !

    Il peut être nécessaire de savoir farfouiller sur le site de www.developpez.com dans la rubrique DELPHI et plus particulièrement dans la F.A.Q. DELPHI, dans les SOURCES DELPHI, dans les tutoriels DELPHI et dans les [ame="http://www.developpez.net/forums/forumdisplay.php?f=8"]forums DELPHI[/ame].

    I-C. Les objectifs du défi

    Votre solution devra offrir les fonctionnalités suivantes :

    - une IHM qui montre la grille de Sudoku et qui permet à l'utilisateur de saisir les chiffres de départ,
    - un élément de l'interface (Bouton, menu item,...) qui permet de déclencher la résolution de la grille.

    Après la résolution, la solution doit s'afficher dans la grille, évidemmment

    De plus, afin de faciliter les tests, votre solution devra permettre de charger une grille pré-définie à partir d'un fichier txt.

    Le fichier aura le format suivant :
    090871340
    410903080
    386245910
    048090100
    601500498
    950184000
    509030071
    074600030
    820019654
    - Une ligne pour chaque ligne de la grille (donc 9 lignes en tout)
    - Les chiffres des colonnes collés les uns aux autres, avec des 0 pour les cases vides.

    Pour info, en cherchant un peu, vous trouverez AI Escargot, la grille annoncée comme la plus difficile à résoudre au monde : elle a été fabriquée par Arto Inkala, un mathématicien finlandais, et fut un chantier de trois mois de modélisation à l’aide d’un ordinateur et l’examen de trois milliards de possibilités.

    Et bien sûr, le défi ne consiste pas à résoudre AI Escargot, c'est juste un point de repère, une référence. Il faut commencer par des plus simples et résoudre AI Escargot n'est pas le seul but à atteindre, ce n'est pas LE défi à relever, un challenge tout au plus.

    Les participant doivent respecter les règles du défi, et le déroulement du défi et plus précisément que "l'utilisation de composantes ou bibliothèques autres que celles fournies en standard par CodeGear sont interdites, qu'elles soient commerciales, freewares, open-source etc. ..."


    I-D. La notation

    Les critères déterminants pour le Jury qui devra désigner le meilleur "Sudoku Solver" sont les suivants :

    - performance du Solver : temps mis pour résoudre une grille, capacité à résoudre les grilles dites "difficiles", (pensez à prévoir un chronomètre)
    - Ergonomie et présentation de l'interface,
    - Propreté du code : documentation (commentaires), indentation, modularité, enfin bref : on enlève les moufles .
    - Fonctionnalités originales et/ou pertinentes (laissez libre court à votre imagination et soyez créatifs !)

    EDIT 06/09/2009 :
    ATTENTION :
    Le défi se terminera le 30 septembre 2009 à minuit.

    Vous avez donc jusqu'au 30 septembre minuit pour envoyer votre solution par mail à cette adresse.

    N'oubliez pas d'indiquer votre pseudo Dvp dans le mail.
    EDIT 01/02/2010 :
    Les résultats du défi sont arrivés

    Nous avons un vainqueur ! Il s'agit de Andnotor.



    Toutes nos félicitations et un grand bravo au vainqueur, ainsi qu'à tous les participants.

    Retrouvez l'intégralité des résultats, les solutions de chaque participants, et bien sûr celle du défieur !

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 477
    Par défaut
    salut

    Enfin un nouveau defi
    bon la la date de fin n'est pas precisé ... on a l'eternité

    @+ Phil

  3. #3
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Je viens de m'inscrire récemment et je croyais que c'était fini les défis ! Mais non ! Trop bien !

    Par contre, en ce moment, je suis occupé sur un programme, donc je ne participerai pas (a moins que je finisse bien avant la date de fin, s'il y en a une )

    En tout cas, je suivrais l'avancement du défi ... Et je participerai surement au prochain défi !

    Bonne chance a tout les participants !

  4. #4
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    Citation Envoyé par mick605 Voir le message
    Je viens de m'inscrire récemment et je croyais que c'était fini les défis ! Mais non ! Trop bien !
    Mais non

    Tant qu'il y a des défieurs, il n'y a pas de raison d'arrêter !

    Pour ce qui est de la date de fin, on n'a pas définit de date pour l'instant.
    Elle sera fixée et communiquée ultérieurement, en fonction de l'avancement du défi et de la participation !

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    salut tout le monde,
    je suis pas sûr de participer à 100% mais j'ai commencé à fuiné voir ici

  6. #6
    Membre expérimenté
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Par défaut Je releve de defi
    Bonjour

    Et un de plus, je releve le défi. J'espère que nous serons nombreux.
    Pour ma part, j'ai deja un petit quelque chose de ma création. Il est toutefois necessaire de revoir le tout (sources,commentaires, et quelques parties a reprendre)

    Voila

    A+

    Pascal

  7. #7
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 18
    Par défaut
    Bonne jour tour le monde

    Je ne suis qu' un débutant amateur de développement,
    C’est ma première contribution dans le forum, je viens de finir le codage de mon solver, je l’ai testé sur plusieurs grilles (il marche apparemment) sur ESCARGO-AI il m’affiche entre 16 et 78 Ms (ma méthode se base sur des générations des nombre aléatoires, ce qui explique le différence de temps de résolution à chaque fois)


    Ma Config
    XP-SP3
    Core 2 Deo 1.83 GH
    2 GM de RAM

    Je ne sais pas, s’il faut envoyer mon solver (à qui ?) ou il faut déposer dans le forum ?


    Merci

  8. #8
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par bahmani Voir le message
    Bonne jour tour le monde

    Je ne suis qu' un débutant amateur de développement,
    C’est ma première contribution dans le forum, je viens de finir le codage de mon solver, je l’ai testé sur plusieurs grilles (il marche apparemment) sur ESCARGO-AI il m’affiche entre 16 et 78 Ms (ma méthode se base sur des générations des nombre aléatoires, ce qui explique le différence de temps de résolution à chaque fois)


    Ma Config
    XP-SP3
    Core 2 Deo 1.83 GH
    2 GM de RAM

    Je ne sais pas, s’il faut envoyer mon solver (à qui ?) ou il faut déposer dans le forum ?


    Merci
    hihi, j'aime bcp l'idée du nombre aléatoire
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    Citation Envoyé par bahmani Voir le message
    Je ne sais pas, s’il faut envoyer mon solver (à qui ?) ou il faut déposer dans le forum ?
    Si tu as une solution finale que tu souhaites soumettre au Jury, envoie un Zip avec les sources, l'exe compilé, et toutes les infos annexes que tu juges utiles à cette adresse (précise en particulier la version de Delphi utilisée pour compiler l'exe).

    Si tu veux juste montrer ta solution aux autres candidats (attention, ils peuvent alors pomper des idées ) tu peux poster le zip de l'exe compilé ici. Rien rien ne t'inderdit ensuite d'améliorer encore ta solution...

    Sans les sources bien évidemment. Tout post avec des sources sera supprimé à vue

  10. #10
    Membre éclairé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Par défaut
    Salut à tou(te)s

    Je viens de récupérer internet après un déménagement qui m'a valu 4 semaines d'interruption... Je commence à me poser des questions sur le sérieux de mon fournisseur d'accès, que je ne nommerai pas

    Juste une question avant d'envoyer ma solution
    Dans la description du défi, je lis
    Les critères déterminants pour le Jury qui devra désigner le meilleur "Sudoku Solver" sont les suivants :

    * performance du Solver : temps mis pour résoudre une grille, capacité à résoudre les grilles dites "difficiles", (pensez à prévoir un chronomètre)
    Il faut donc que le solveur affiche le temps calculé pour la résolution
    Avec quelle précision ?
    Autre chose, vu que les chronomètres ne seront pas tous codés à l'identique, est-ce que ça ne risque pas de fausser les comparaisons

    Désolé si ces questions ont déjà été posées ici, je n'ai pas relu toute la discussion

  11. #11
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    Citation Envoyé par OutOfRange Voir le message
    Il faut donc que le solveur affiche le temps calculé pour la résolution
    Avec quelle précision ?
    Autre chose, vu que les chronomètres ne seront pas tous codés à l'identique, est-ce que ça ne risque pas de fausser les comparaisons
    Tu dois prévoir une précision suffisante pour mesurer les temps de résolution de ton solveur.
    Si ce dernier met plusieurs secondes pour résoudre une grille, tu peux te contenter de mesurer le temps en ms avec des GetTickCount.
    Si le temps de résolution est inférieur à 20 ms, il va falloir quelque chose de plus précis, comme par exemple QueryPerformanceCounter, qui a déjà été expliqué précédemment dans cette discussion.

    Ensuite, de toute façon on vérifiera ce qui est chronométré, si le chronomètre est fiable...

  12. #12
    Membre éclairé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Par défaut
    Citation Envoyé par Franck SORIANO
    Si le temps de résolution est inférieur à 20 ms, il va falloir quelque chose de plus précis, comme par exemple QueryPerformanceCounter
    OK Franck mais je parlais uniquement de l'affichage via un formatfloat par ex
    Est-ce que le temps affiché doit permettre des comparaisons précises pour les seuls besoins du défi ?
    D'un point de vue IHM pur, je ne vois pas d'intérêt à afficher les temps en millisecondesx10^-3...

    Citation Envoyé par Franck SORIANO
    Si ce dernier met plusieurs secondes pour résoudre une grille
    Bon d'accord, les temps que j'avais annoncés jusqu'ici n'étaient pas terribles, mais quand même
    Pour la petite histoire, j'avais laissé traîner une commande du genre TStringGrid.Repaint au beau milieu de mes boucles de résolution, qui me plombait mes temps bien comme il faut...

  13. #13
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    OutOfRange > Ca arrive, moi j'avais laissé un affichage de mémo au début ...
    T'es descendu en dessous de la milliseconde ?

    Bon, j'ai une question : J'ai un bouton et un MenuItem qui doivent se comporter exactement pareil. Est ce qu'il existe un moyen (simple) d'arriver a ce résultat ? Par exemple, ils doivent avoir les memes évenements (facile), et que quand un des deux a sa propriété Enabled a false, l'autre l'ait aussi ?

  14. #14
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    Citation Envoyé par mick605 Voir le message
    Bon, j'ai une question : J'ai un bouton et un MenuItem qui doivent se comporter exactement pareil. Est ce qu'il existe un moyen (simple) d'arriver a ce résultat ? Par exemple, ils doivent avoir les memes évenements (facile), et que quand un des deux a sa propriété Enabled a false, l'autre l'ait aussi ?
    Le composant TActionList(et bien sur TAction) est fait pour ça !


    Citation Envoyé par OutOfRange
    D'un point de vue IHM pur, je ne vois pas d'intérêt à afficher les temps en millisecondesx10^-3...
    C'est à toi de voir ce qui est le plus claire et le plus lisible. Il faut qu'on comprenne.

Discussions similaires

  1. Défi Migration de delphi 3 à delphi 8
    Par sitalebs dans le forum EDI
    Réponses: 8
    Dernier message: 03/01/2008, 14h30

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