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 :

[Howto] étoile magique


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Par défaut [Howto] étoile magique
    Bonjour,
    Connaissez-vous les carrés magiques ?

    Et bien je me suis penché sur un problème des plus intéressants: les étoiles magiques.
    J'ai tenté une approche purement mathématique, mais je me suis vite heurté à un mur: impossible de trouver un algorithme capable de résoudre de tels problèmes...

    Je me dois peut-être de préciser que je ne me suis penché, pour l'instant, que sur les étoiles à six branches (hexagramme ou étoile de David).

    Donc, après avoir travailler sur le problème, j'ai dû admettre que mon approche n'était pas la bonne.

    Aussitôt, je me suis dit: la programmation !
    Bin oui, ce que les maths ne pouvait pas résoudre d'une formule, j'étais sûr d'arriver à faire faire à un ordi le "sale boulot" qui prendrait des heures à un humain.

    Malheureusement, je n'ai aucune idée de la manière dont je dois aborder le problème...
    En effet, j'ai réussi à faire de mon étoile une matrice (4,6) qui résume le tout, intégrant les conditions, mais après...

    Voici l'étoile que j'utilise (pour les variables):

    Et voici sa matrice associée (sur la droite et en dessous, c'est la somme de chaque ligne/colonne (resp.) et donc les conditions !)


    Je précise que je comprends le C# et le JavaScript, que j'ai des bases en Pascal/Delphi, ainsi qu'en HTML, PHP (surtout) mais que je programme principalement en Basic/TI-Basic. (Assembleur, il fut un temps, mais plus maintenant.)
    Donc si vous voulez donner un exemple, ce serait bien que je puisse l'appréhender tout de même...

    Je dois aussi dire que je ne vous demande en aucun cas de m'écrire un programme, bien au contraire, je souhaite le faire moi-même, toutefois je ne "vois" pas comment ce faire...
    En effet, je ne peux pas lui demander de tester toute les possibilités !
    Et je n'ai pas trouvé d'algorithme adapté.
    Je me disais que par itération ou plutôt par récurrence, en éliminant au fur et à mesure les nombres testés, etc., je pourrais arriver à quelque chose, mais je tourne en rond !

    Pour rappel:
    • mon étoile est une étoile à six branche
    • mon "total magique" est donc 26
    • j'ai à disposition une et une seul fois les nombres de 1 à 12


    Ensuite, je précise que OUI, j'ai essayé avec Google, dans trois langues qui plus est !
    Que j'ai trouvé quelques sites très intéressants, ainsi que toutes les solutions, mais que je n'ai rien trouvé quant à la programmation permettant de trouver les solutions.
    (je pensais mettre en input seulement le nombre de solutions que je recherche, pour l'instant, plus tard, j'essayerai de l'étendre aux étoiles à n-branches)

    Je me réjouis d'entendre vos avis sur la question, j'espère avoir trouvé le bon endroit pour mon message et je vous prie d'être indulgent si j'ai enfreint une règle quelconque du forum que je n'aurais pas vue.
    (J'ai lu les règles avant de poster )

    Cordialement, Aryrel.


    Annexe:
    Lien intéressant sur les étoiles magiques (en anglais), on y trouve aussi des infos sur les carrés du même nom ainsi que sur d'autre curiosités du genre.

    EDIT: excusez, je me suis trompé avec le lien des images, maintenant c'est corrigé.

  2. #2
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    J'ai pas lu dans le détail, mais je pense que prolog est une réponse accessible à la découverte des solutions d'un tel problème.

    Note que ca revient à explorer un espace, avec élimination des chemins qui n'aboutissent pas.

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Prolog + bibliothèque de programmation par contraintes : voir ici. C'est tout à fait ça !
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Aryrel Xeon Voir le message
    Ensuite, je précise que OUI, j'ai essayé avec Google, dans trois langues qui plus est !
    Que j'ai trouvé quelques sites très intéressants, ainsi que toutes les solutions, mais que je n'ai rien trouvé quant à la programmation permettant de trouver les solutions.
    (je pensais mettre en input seulement le nombre de solutions que je recherche, pour l'instant, plus tard, j'essayerai de l'étendre aux étoiles à n-branches)
    Tu peux employer le même genre d'algo que pour les Sudoku (exploration avec backtracking). Pour trouver TOUTES les solutions et pas juste une seule, il suffit de forcer un backtrack lorsque tu trouves une solution.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Tu peux employer le même genre d'algo que pour les Sudoku (exploration avec backtracking). Pour trouver TOUTES les solutions et pas juste une seule, il suffit de forcer un backtrack lorsque tu trouves une solution.
    Chacun prône pour sa chapelle
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Chacun prône pour sa chapelle
    C'est clair. Je suis un agent de Sun, payé pour promouvoir Java.

    Cela dit, je pense qu'il veut coder dans un langage impératif:
    Citation Envoyé par le PO
    Je précise que je comprends le C# et le JavaScript, que j'ai des bases en Pascal/Delphi, ainsi qu'en HTML, PHP (surtout) mais que je programme principalement en Basic/TI-Basic. (Assembleur, il fut un temps, mais plus maintenant.)
    Et puis de toutes façons, Prolog fait aussi du backtracking.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Ton raisonnement est tout à fait logique, tu devrais te contraindre à faire du Prolog (j'ai honte )
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Ton raisonnement est tout à fait logique, tu devrais te contraindre à faire du Prolog (j'ai honte )
    J'en ai fait... j'ai pas aimé la syntaxe, alors j'ai codé mon propre moteur d'inférence (j'étais fou à l'époque). Maintenant j'utilise Jess.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/08/2005, 22h15
  2. Probleme avec l'étoile "*"
    Par Tijee dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 10/05/2005, 10h08
  3. Recherche "étoilée" avec std::set
    Par guejo dans le forum MFC
    Réponses: 2
    Dernier message: 06/05/2004, 13h28
  4. [langage] Expression regulière magique?
    Par ma2th dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2004, 08h19
  5. Howto - Envoi message sur réseau
    Par Thomad dans le forum Windows
    Réponses: 2
    Dernier message: 31/03/2004, 16h46

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