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

Lisp Discussion :

représentation interne (doublets)


Sujet :

Lisp

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Points : 60
    Points
    60
    Par défaut représentation interne (doublets)
    bonjour
    je cherche a Convertir, en utilisant Dia, la liste suivante en représentation interne (doublets) : (c . e) b (d e (f)) j ((h i) g))!
    mais je ne comprend pas comment et ou placer le . ?? et le b et j et g qui n'ont pas de parenthèses comment les placer dans un doublet ??

    merci de m'aider

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Bonjour.
    Je ne suis pas sûr de bien comprendre la question, car je ne connais pas DIA.

    Si tu veux connaître la structure interne d'une liste telle que ((c . e) b (d e (f)) j ((h i) g)) dans un environnement lisp, avec des doublets encore appelés "cons cells", le mieux serait que tu regardes un tutoriel d'introduction à lisp.

    En ce qui concerne le point, tu peux chercher "paire pointée":
    (c . e) est une paire pointée, c'est-à-dire un doublet dont le "car" est (ou contient (ou pointe vers)) le symbole c et dont le cdr est le symbole e.

    La liste ((c . e) b (d e (f)) j ((h i) g)) est un fait (un pointeur vers) un doublet dont le car est (ou pointe vers) la paire pointée (c . e) et dont le cdr est un doublet dont le car est le symbole b et le cdr un doublet dont le car est un doublet dont le car est le symbole d et dont le cdr est un doublet dont le car est le symbole e... euh... j'aurais plus vite fait d'écrire le programme... et moins de chances de m'emmêler les parenthèses...

    Sitôt dit, sitôt fait:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    ELISP> (jd-describe-string '((c . e) b (d e (f)) j ((h i) g)))
    "un doublet dont le car est un doublet dont le car est le symbole 'c' et le cdr est le symbole 'e' et le cdr est un doublet dont le car est le symbole 'b' et le cdr est un doublet dont le car est un doublet dont le car est le symbole 'd' et le cdr est un doublet dont le car est le symbole 'e' et le cdr est un doublet dont le car est un doublet dont le car est le symbole 'f' et le cdr est nil et le cdr est nil et le cdr est un doublet dont le car est le symbole 'j' et le cdr est un doublet dont le car est un doublet dont le car est un doublet dont le car est le symbole 'h' et le cdr est un doublet dont le car est le symbole 'i' et le cdr est nil et le cdr est un doublet dont le car est le symbole 'g' et le cdr est nil et le cdr est nil"
     
    ELISP> (jd-describe '((c . e) b (d e (f)) j ((h i) g)))
    ("un doublet dont le car est "
     ("un doublet dont le car est "
      ("le symbole '" c "'")
      " et le cdr est "
      ("le symbole '" e "'"))
     " et le cdr est "
     ("un doublet dont le car est "
      ("le symbole '" b "'")
      " et le cdr est "
      ("un doublet dont le car est "
       ("un doublet dont le car est "
        ("le symbole '" d "'")
        " et le cdr est "
        ("un doublet dont le car est "
         ("le symbole '" e "'")
         " et le cdr est "
         ("un doublet dont le car est "
          ("un doublet dont le car est "
           ("le symbole '" f "'")
           " et le cdr est " "nil")
          " et le cdr est " "nil")))
       " et le cdr est "
       ("un doublet dont le car est "
        ("le symbole '" j "'")
        " et le cdr est "
        ("un doublet dont le car est "
         ("un doublet dont le car est "
          ("un doublet dont le car est "
           ("le symbole '" h "'")
           " et le cdr est "
           ("un doublet dont le car est "
            ("le symbole '" i "'")
            " et le cdr est " "nil"))
          " et le cdr est "
          ("un doublet dont le car est "
           ("le symbole '" g "'")
           " et le cdr est " "nil"))
         " et le cdr est " "nil")))))
    écrit en emacs-lisp (pour aller plus vite):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (defun jd-describe (o)
      "Décrit O sous forme d'arbre."
      (cond
       ((null o) "nil")
       ((stringp o) (list "la chaine '" o "'"))
       ((numberp o) (list "le nombre '" o "'"))
       ((symbolp o) (list "le symbole '" o "'"))
       ((consp o)
        (list "un doublet dont le car est " (jd-describe (car o))
              " et le cdr est " (jd-describe (cdr o))))))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (defun jd-describe-string (o)
      "Décrit O sous forme d'une (grande) chaine."
      (cond
       ((null o) "nil")
       ((stringp o) (concat "la chaine '" (format "%s" o) "'"))
       ((numberp o) (concat "le nombre '" (format "%s" o) "'"))
       ((symbolp o) (concat "le symbole '" (format "%s" o) "'"))
       ((consp o)
        (concat "un doublet dont le car est " (jd-describe-string (car o))
              " et le cdr est " (jd-describe-string (cdr o))))))

    Il en faut peu pour être heureux...

    )jack(

Discussions similaires

  1. Représentation graphique des liens internes
    Par titmael dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 29/07/2010, 08h51
  2. Réponses: 2
    Dernier message: 09/01/2009, 10h29

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