Sujet : Re: [Jeux] Trouver le calcul caché
De : samuel.devulder (at) *nospam* laposte.net.invalid (Samuel DEVULDER)
Groupes : fr.sci.mathsDate : 24. Feb 2022, 19:44:02
Autres entêtes
Organisation : Nemoweb
Message-ID : <YE6W6e8se1frIY95DE63xP-Qngs@jntp>
References : 1 2 3 4 5 6 7 8 9 10
User-Agent : Nemo/0.999a
Le 24/02/2022 à 11:07, Jacques Mathon a écr
Quant à 82/4*6+9, il est rejeté car 82/4 n’est pas entier. La solution recherchée contient bien une division "exacte" ?
Non, c'est bien celle là !
Arf, j’avais présumé que c’était interdit.
C'était la raison de mon "Et alors ?".
Je vais donc ajouter le support pour des nombres rationnels (c’est facile en Prolog)
------8<–-------------------------------------------
rational(_/_).
calc(U, V, P/Q) :- % normalize
X is U,
( X=0 ->
P=0,
Q=1
; Y is V,
Z is gcd(X,Y),
P is X div Z,
Q is Y div Z
).
calc(A/B, +, C/D, R) :- calc(A*D+B*C, B*D, R).
calc(A/B, -, C/D, R) :- calc(A*D-B*C, B*D, R).
calc(A/B, *, C/D, R) :- calc(A*C, B*D, R).
calc(_, /, 0/_, _) :- !, fail. % can’t divide by 0
calc(A/B, /, C/D, R) :- calc(A*D, B*C, R).
----8<---–------------------------------------------