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

  1. #81
    Inactif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 182
    Points : 212
    Points
    212
    Par défaut 8 reveles
    En dessous de 17 révélés tous les problèmes ont plusieurs solutions
    Boris

    Je voudrais commencer la journée en saluant chaleureusement
    celui qui dans l'ombre corrige mes messages pour les mettre en français
    Merci à toi
    Boris
    Papy

    Nul ne pourra jamais vous empêchez d'être libre.

  2. #82
    Membre averti
    Avatar de Félix Guillemot
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 149
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par mick605 Voir le message

    Yeah !

    Edit : Est ce quue quelqu'un verrait comment, par la logique, continuer de résoudre cette grille ?? Les solveurs d'internet n'y arrivent pas ! Et la solution est unique !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    084210590
    056409800
    009058040
    047501938
    508090004
    931804075
    090045780
    800900450
    475182369
    Je cherche a savoir quelle technique il faudrait que je code !
    Mick, cette grille se résoud par la logique, et sans hypothèses.
    Mon solver la résoud par la logique seule (0,8ms machine de 2005).
    Par contre, si je te donne les méthodes logiques, ce n'est plus drôle

    A+

  3. #83
    Membre averti
    Avatar de Félix Guillemot
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 149
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par Félix Guillemot Voir le message
    Mick, cette grille se résoud par la logique, et sans hypothèses.
    Oups ! Erreur de ma part, j'avais mal vu : non, il a fallu poser une hypothèse, mais la résolution reste effective en "un rien de temps"

  4. #84
    Inactif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 182
    Points : 212
    Points
    212
    Par défaut Grille de Mick
    Nous avons la un problème de définition:
    Pour aller plus loin dans ta grille on va utiliser la méthode de 'couleurs"
    c'est a dire une méthode d'hypothèses parfaitement maitrisée. Et donc doit-on considère que la méthode des couleurs est une méthode logiue
    ou une méthode Brute force

    En réalité les soldeurs par restriction ou contrainte (essai de tous les candidats possibles) utilisent la méthode des couleurs

    En fait toutes les problemes sont solubles en n'utilisant que les couleurs
    car couleur = hypothèse

    Boris
    Papy

    Nul ne pourra jamais vous empêchez d'être libre.

  5. #85
    Membre chevronné

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par Félix Guillemot Voir le message
    Mon solver la résoud par la logique seule (0,8ms machine de 2005).
    C'est rapide, mais je vous donne directement la simplification ! L'énoncé a beaucoup moins de valeurs.

    Citation Envoyé par Félix Guillemot Voir le message
    Oups ! Erreur de ma part, j'avais mal vu : non, il a fallu poser une hypothèse, mais la résolution reste effective en "un rien de temps"
    Haha, je m'en doutais ! Pourtant je pense que c'est possible sans (toujours la meme chose) !

    Citation Envoyé par FullSpeed Voir le message
    Pour aller plus loin dans ta grille on va utiliser la méthode de 'couleurs"
    c'est a dire une méthode d'hypothèses parfaitement maitrisée. Et donc doit-on considère que la méthode des couleurs est une méthode logiue
    ou une méthode Brute force
    Je dirais, une méthode logique avec hypothese ! Je connaissais déja cette technique, ce n'est rien d'autre que des techniques que nous appliquons déja en vrai. C'est juste pour aller plus vite a l'écrit. Mais, pour l'instant, je code autre chose

    Bon sinon, je viens de me faire une petite fonction récursive qui me trouve les candidats doubles, triples, ..., octuples !!

  6. #86
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par Félix Guillemot Voir le message
    Tous les Sudokus y compris AI Escargot sont résolus par la logique. Il faut chercher ces méthodes logiques. Imbriquées les unes dans les autres et purement traduites en algo, elles sont efficientes.
    Il faut s'intéresser un peu au sudoku et les chercher.
    Dans cet exercice, c'est cette recherche de méthodes qui est intéssante, s'arrêter à la boucle la plus rapide, c'est dommage.
    Quand je dis par la logique, je n'exclue pas l'éventualité de poser une hypothèse quand cela est nécessaire pour explorer deux scénrarii ou plus.
    Il n'y a pas une seule vérité ou une seule méthode, c'est la combinaison de ces méthodes qui fait la force de la méthode.
    Tout à fait, d'accord, pour le moment, je n'ai bossé que 4 heures sur mon Sudoku Solver, la 1er Algo de résolution des grilles faciles et moyennes fut rapidement au point, maintenant, je n'avance plus ... j'ai un algo en tête, mais il ne veut pas sortir, faut que je le couche sur le papier ... avant de penser à la performance, je m'interesse juste à sa réussite et cela risque d'être long car j'ai enfin un peu de temps pour tester D2009 (Trial), et migrer les 1ers éléments de la lib interne de mon employeur, enfin un taf interessant !
    J'essayerais quand même d'avancer mon sudoku ... qui lui restera en D6
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #87
    Membre averti
    Avatar de Félix Guillemot
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 149
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Tout à fait, d'accord, pour le moment, je n'ai bossé que 4 heures sur mon Sudoku Solver, la 1er Algo de résolution des grilles faciles et moyennes fut rapidement au point, maintenant, je n'avance plus ... j'ai un algo en tête, mais il ne veut pas sortir, faut que je le couche sur le papier ... avant de penser à la performance, je m'interesse juste à sa réussite et cela risque d'être long car j'ai enfin un peu de temps pour tester D2009 (Trial), et migrer les 1ers éléments de la lib interne de mon employeur, enfin un taf interessant !
    J'essayerais quand même d'avancer mon sudoku ... qui lui restera en D6
    Je suis d'accord avec ta démarche : d'abord la méthode bien formalisée et ensuite le code, et ensuite l'optimisation.
    Il faut savoir que je n'ai fait aucun effort d'optimisation de mon code. A l'époque, quand j'ai vu que l'application mettait 1 milliseconde pour la plupart des grilles avec un 20ms pour AI Escargot, je n'ai même pas cherché à aller plus loin, parce que c'est suffisant, en tant qu'utilisateur, je ne verrai pas la différence entre ça et 1 pico seconde.
    Ensuite, une fois que l'algo est rôdé et que l'appli marche bien, je peux toujours m'amuser à gratter des micro-secondes, ce qui constitue une discipline en soi tout à fait consistante.
    Celui qui gagnera le concours de vitesse au final est celui qui aura la meilleur méthode, car une fois optimisée en term de code, elle sera imbattable à mon avis.
    On pourrait faire un concours d'optimisation en partant tous du même code, mais ceci ferait l'objet d'un autre défi.


    Ps : ton code en D6 est compilable directement en 2009 à mon avis.

  8. #88
    Membre chevronné

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    ShaiLeTroll > Je viens de trouver un truc super : C'est que tu peux resoudre plein de grilles diaboliques avec UNE SEULE fonction.

    Est ce que tu as déja entendu parler des candidats Doubles, triples, quadruples, et des paires cachées, triplets cachés, ... (j'imagine que oui) Ben, sur une zone donnée, si il y a 5 cases vides, rechercher une paire cachée, c'est comme rechercher des candidats triples.

    En fait, pour une ligne a X cases vides, rechercher un ensemble Nieme caché, c'est comme rechercher des candidats (X-N)ieme

    Donc, si tu arrives a coder une fonction (récursive ) qui recherche des candidats Nieme, tu resoud en meme temps les ensembles cachés, et tu pourras résoudre plein de grilles diaboliques. (ensuite, faut l'optimiser, parce que niveau vitesse, ...)

  9. #89
    Membre averti
    Avatar de Félix Guillemot
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 149
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par mick605 Voir le message
    ShaiLeTroll > Je viens de trouver un truc super : C'est que tu peux resoudre plein de grilles diaboliques avec UNE SEULE fonction.

    Est ce que tu as déja entendu parler des candidats Doubles, triples, quadruples, et des paires cachées, triplets cachés, ... (j'imagine que oui) Ben, sur une zone donnée, si il y a 5 cases vides, rechercher une paire cachée, c'est comme rechercher des candidats triples.

    En fait, pour une ligne a X cases vides, rechercher un ensemble Nieme caché, c'est comme rechercher des candidats (X-N)ieme

    Donc, si tu arrives a coder une fonction (récursive ) qui recherche des candidats Nieme, tu resoud en meme temps les ensembles cachés, et tu pourras résoudre plein de grilles diaboliques. (ensuite, faut l'optimiser, parce que niveau vitesse, ...)
    ça me paraît intéressant...

  10. #90
    Membre chevronné

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par Félix Guillemot Voir le message
    ça me paraît intéressant...
    Et je peux te dire que ca marche du tonerre ^^

  11. #91
    Inactif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 182
    Points : 212
    Points
    212
    Par défaut Passagea D2009
    Le code est compatible a une donnée pret:
    avec D2009 les strings sont en Unicode: chaque caractère est codeé sur 16 bits
    Toutes les array of char (comme les string) doivent etrte remplacés par de array of byte si tu as besoin de conserver une taille de 8
    Les delete et autre fillchar réservent quelques surprises.
    A part cela le code marche bien
    Si tu fais par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Inc(byte(Monhstring[8])):
    cela ne compile pas.
    Il fait définir mon string: array of byte et non string
    C'est parfois un gros boulot

    Boris

    [EDIT]

    Quelqu'un aurait-il des routines rusées pour inverser ou
    pivoter de 90° une matrice: faire que les colonnes
    deviennent rangées?
    Merci
    [\EDIT]
    Papy

    Nul ne pourra jamais vous empêchez d'être libre.

  12. #92
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par mick605 Voir le message
    ShaiLeTroll > Je viens de trouver un truc super : C'est que tu peux resoudre plein de grilles diaboliques avec UNE SEULE fonction.

    Est ce que tu as déja entendu parler des candidats Doubles, triples, quadruples, et des paires cachées, triplets cachés, ... (j'imagine que oui) Ben, sur une zone donnée, si il y a 5 cases vides, rechercher une paire cachée, c'est comme rechercher des candidats triples.

    En fait, pour une ligne a X cases vides, rechercher un ensemble Nieme caché, c'est comme rechercher des candidats (X-N)ieme
    C'est effectivement, mon idée, j'ai tous les candidats possibles pour chaque case, et pensais tester un par un tous les arrangements ... parmis les candidats via un arbre ... selon une approche totalement empirique
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  13. #93
    Membre averti
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 60
    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
    Points : 352
    Points
    352
    Par défaut et mes vacances alors
    Bonjour

    Je pars en juillet et je serai chargé en Aout coté boulot.

    Alors, j'ai adressé ma solution a Felix.

    Je passerai ici entre 2;

    Pour moi , les dès sont jetés.

    Bonne chance à tous.

    Pascal

  14. #94
    Membre averti
    Avatar de Félix Guillemot
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 149
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par Pascal Fonteneau Voir le message
    Bonjour

    Je pars en juillet et je serai chargé en Aout coté boulot.

    Alors, j'ai adressé ma solution a Felix.

    Je passerai ici entre 2;

    Pour moi , les dès sont jetés.

    Bonne chance à tous.

    Pascal
    Arg ! Pascal, tu as utilisé le TPageExtControl, c'est un composant additionel, c'est interdit par le règlement, et de plus, je ne peux pas compiler ton code...

    Remet un TPageControl...vite...

    Avis aux amateurs de composants, PAS DE COMPOSANTS hors vcl de base !

  15. #95
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    Citation Envoyé par FullSpeed Voir le message
    Nous avons la un problème de définition:
    Pour aller plus loin dans ta grille on va utiliser la méthode de 'couleurs"
    c'est a dire une méthode d'hypothèses parfaitement maitrisée. Et donc doit-on considère que la méthode des couleurs est une méthode logiue
    ou une méthode Brute force

    En réalité les soldeurs par restriction ou contrainte (essai de tous les candidats possibles) utilisent la méthode des couleurs

    En fait toutes les problemes sont solubles en n'utilisant que les couleurs
    car couleur = hypothèse

    Boris
    appelé aussi coloring map
    c'est l'équivalent du coloriage de la carte de France avec 4 couleur
    il as été démontré que la théorie des graphe s'applique au problème du sudoku

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  16. #96
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    Citation Envoyé par FullSpeed Voir le message
    [EDIT]

    Quelqu'un aurait-il des routines rusées pour inverser ou
    pivoter de 90° une matrice: faire que les colonnes
    deviennent rangées?
    Merci
    [\EDIT]

    tu veut que les colonne devienne des ligne et inversement
    le plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For L := low(Tab) to  High(Tab) do 
    begin
       For C := low(Tab[L]) to  High(Tab[L]) do 
         Result[C,L] := Tab[L,C];
    end;

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  17. #97
    Inactif
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 182
    Points : 212
    Points
    212
    Par défaut inversion
    Merci Anapurna mais ton code (efficace) c'est la methode traditionnelle
    je cherche si nos matheux n'ont pas imaginer des cosinus de Log...

    Pour les couleurs et hypothèses cela n'a rien a voir avec la methode
    des graphes : il y a un problème de vocabulaire. On ne parle pas de la meme chose!

    Si cela intéresse j'ai écrit une petite routine qui 'tasse' les grilles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    931804075
    090045780
    800900450
    475182369
     
    000000070
    030804780
    891945455
    475182369
    On fait remonter les zéros et on garde le rang du révélé
    Boris
    Papy

    Nul ne pourra jamais vous empêchez d'être libre.

  18. #98
    Membre averti
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 60
    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
    Points : 352
    Points
    352
    Par défaut Oups.......
    Felix a ecrit

    Arg ! Pascal, tu as utilisé le TPageExtControl, c'est un composant additionel, c'est interdit par le règlement, et de plus, je ne peux pas compiler ton code...

    Remet un TPageControl...vite...
    Oups.... je corrige immédiatement.

    Pascal

  19. #99
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    pour faire des tests rapide assembleur est inevitable il faut utiliser les bits d'un entier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var
    lignes  :array[0..8] of integer;
    colonnes:array[0..8] of integer;
    subTabs :array[0..8] of integer;
    sudoku  :array[0..80] of array[0..80] of integer;
    initialization
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
       for i:=0 to 8 do
        begin
          lignes  [i]:=511;
          colonnes[i]:=511;
          subTabs [i]:=511;
        end;
       for i:=0 to 8 do
         for j:=0 to 8 do
         begin
              b:= (j div 3)+((i div 3)*3);
            if(sudoku[j,i]<>0) then
            begin
               ExcludeBit(lignes[i],sudoku[j,i]);
               ExcludeBit(subTabs[b],sudoku[j,i]);
            end ;
     
     
            if(sudoku[i,j]<>0) then
              ExcludeBit(colonnes[i],sudoku[i,j]);
     
         end ;
     
    ...

    fonctions assembleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    //bit a zéro
    procedure ExcludeBit(var Bits:integer;Index: Integer);register;
    asm
        DEC     EDX
        BTR     [EAX],EDX
    end;
     
    //premier bit a 1
    function Firstidx(value:integer):integer; register;
     asm
        BSF EAX,EAX
        JZ      @exit
        INC     EAX
        RET
      @exit:
    end;
     
    //test si un bit est a 1
    function _in(A,b : integer) : boolean ; register;
    asm
      DEC  EDX
      BT EAX,EDX
      SETC AL
    end ;
    fonction de test pascal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //premier occurence 
    function PremierOc(c,r,s:integer):integer;
    begin
       result:= Firstidx(lignes[r] and colonnes[c]  and subTabs[s]);
    end;
    //Intersection 
    function Intersec(c,r,s:integer):integer;
    begin
       result:= lignes[r] and colonnes[c]  and subTabs[s];
    end;
    j'espere que le code ne sera pas supprimer

  20. #100
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    Citation Envoyé par FullSpeed Voir le message
    Merci Anapurna mais ton code (efficace) c'est la methode traditionnelle
    je cherche si nos matheux n'ont pas imaginer des cosinus de Log...
    genre un modulo 3 pour eviter de faire les 81 cases


    Citation Envoyé par FullSpeed Voir le message
    Pour les couleurs et hypothèses cela n'a rien a voir avec la methode
    des graphes : il y a un problème de vocabulaire. On ne parle pas de la meme chose!
    fait une recherche sur "Sudoku Squares and Chromatic Polynomials"
    tu comprendra peut etre la relation entre les couleurs ,les graphes et le sudoku

    Citation Envoyé par FullSpeed Voir le message
    Si cela intéresse j'ai écrit une petite routine qui 'tasse' les grilles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    931804075
    090045780
    800900450
    475182369
     
    000000070
    030804780
    891945455
    475182369
    On fait remonter les zéros et on garde le rang du révélé
    Boris
    ta matrice résultante n'est pas exact tu as perdu le premier 9

    sinon il y as une possibilité d'utilisation des matrice appelée
    "Diagonally Distinct Sudoku Squares"
    il faut que je verifie quelque petit truc mais cela parait prometteur



    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

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