Sujet : Re: Résoudre cette égalité
De : talon (at) *nospam* niobe.lpthe.jussieu.fr (Michel Talon)
Groupes : fr.sci.physiqueDate : 06. Jun 2023, 14:04:24
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <647f2ed8$0$25955$426a74cc@news.free.fr>
References : 1 2 3 4
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0
Le 06/06/2023 à 10:23, Michel Talon a écrit :
Contrairement à Common Lisp qui gère nativement les rationnels (et maxima aussi). Par exemple en lisp:
Je m'aperçois que j'ai oublié de poster la solution directement en lisp, que voici comme petite
introduction à lisp pour ceux qui ne connaissent pas.
CL-USER> (do ((x 11 (1+ x))) ((> x 150) 'done)
(let ((y (/ (* 10 x) (- x 10))))
(if (and (> y 0) (integerp y))
(print (list x y)))))
(11 110)
(12 60)
(14 35)
(15 30)
(20 20)
(30 15)
(35 14)
(60 12)
(110 11)
DONE
C'est la traduction directe de la solution en maxima, supposant connu que en lisp l'opération
figure en premier dans une liste (* 10 x) -> 10*x, (- x 10) -> x-10 et enfin
(/ (* 10 x) (- x 10)) -> 10*x / (x-10)
Aussi la boucle DO est un peu bizarre, elle prend la forme (DO A B C) où A représente les variables de boucle,
leur initialisation et leur incrémentation, ici x de 11 incrémenté par pas de 1, B représente la condition
d'arrêt suivi par le résultat de la boucle (ici afficher DONE) et enfin C le corps de la boucle, qui est évident.
-- Michel Talon