Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > Lisp
Lisp Forum d'entraide sur la programmation en langages fonctionnels Lisp et Common Lisp
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/09/2012, 15h06   #1
Lyadrielle
Futur Membre du Club
 
Femme Chloé Garcia
Étudiant
Inscription : avril 2012
Messages : 36
Détails du profil
Informations personnelles :
Nom : Femme Chloé Garcia
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2012
Messages : 36
Points : 17
Points : 17
Par défaut Soucis avec récursivité !

Bonjour,

J'essaie de faire ceci :

Transformer ce genre d'expressions : ((x + 2) / (x - 3)) en ce genre d'expression : (/ (+ x 2) (- x 3)).

Voici ce que j'ai commencé à faire :

Code :
1
2
3
4
5
6
7
(defun transformer (liste)
  (setq element_2 (car(cdr liste)))
  (setq element_1 (car liste))
  (setq element_3 (caddr liste))
  (setq resultat (list element_2
                       (if (listp element_1)(setq element_1 (transformer element_1)) element_1)
                       element_3)))
Cela me donne :

En effet, je ne peux pas faire en parallèle la transformation de l'élément 3 en même temps que l'élément 1.

Je me demande si mon algorithme est le bon vu les difficultés que j'ai à le mettre en place >< !

Quelqu'un aurait-il une meilleure idée ?

Merci par avance pour votre aide.
Lyadrielle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2012, 23h36   #2
Trap D
Rédacteur/Modérateur
 
Avatar de Trap D
 
Inscription : septembre 2003
Messages : 4 434
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 4 434
Points : 5 298
Points : 5 298
Je pense que pour ce genre d'exo, il faut s'intéresser aux grammaires des expressions arithmétiques.
Il faut construire un arbre syntaxique, une fois que cet arbre est construit, on le parcourt ensuite comme on veut pour avoir les différentes formes, pré/post/in fixées.
On trouve plein d'exemples sur le net, et aussi sur les forums de DVP tape en recherche "arbre" + "arithmétique" et tu auras des résultats.
__________________
"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 : Intérieur avec jeune femme de Vilhelm Hammershoi
Trap D est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2012, 09h17   #3
Lyadrielle
Futur Membre du Club
 
Femme Chloé Garcia
Étudiant
Inscription : avril 2012
Messages : 36
Détails du profil
Informations personnelles :
Nom : Femme Chloé Garcia
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2012
Messages : 36
Points : 17
Points : 17
Ok, je vais me renseigner.
Merci
Lyadrielle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 14h00   #4
jack-ft
Membre Expert
 
Inscription : avril 2008
Messages : 790
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 790
Points : 1 793
Points : 1 793
Citation:
Envoyé par Lyadrielle Voir le message
En effet, je ne peux pas faire en parallèle la transformation de l'élément 3 en même temps que l'élément 1.
Qu'est-ce qui t'en empêche?
C'est bien à ça que sert la récursivité


Citation:
Je me demande si mon algorithme est le bon vu les difficultés que j'ai à le mettre en place >< !

Quelqu'un aurait-il une meilleure idée ?
Voici un embryon de proposition (à tester):

Code :
1
2
3
4
5
6
(defun transformer (liste)
    (if (not (listp liste))
        liste
      (list (nth 1 liste)
            (transformer (nth 0 liste))
            (transformer (nth 2 liste)))))
jack-ft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 16h54   #5
Lyadrielle
Futur Membre du Club
 
Femme Chloé Garcia
Étudiant
Inscription : avril 2012
Messages : 36
Détails du profil
Informations personnelles :
Nom : Femme Chloé Garcia
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2012
Messages : 36
Points : 17
Points : 17
Par défaut Re:

En effet, ça marche mieux =)

Merci
Lyadrielle est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h15.


 
 
 
 
Partenaires

Hébergement Web