Min 3 entiers
Bonjour,
je veux que vous aidez a trouver la syntaxe correcte de ce programme
. Écrire une règle qui la min de trois entiers. en prolog , j'ai esseyé avec ce code mais ca marche pas :(
min(A, B, C, D):- A < B,
min(A ,B ,C,T),
D is T ,
min(T,C,R),
D is R.
au secours :))))))))))))))
je veux que vous aidez a trouver la syntaxe correcte de ce programme
. Écrire une règle qui la min de trois entiers. en prolog , j'ai esseyé avec ce code mais ca marche pas :(
min(A, B, C, D):- A < B,
min(A ,B ,C,T),
D is T ,
min(T,C,R),
D is R.
au secours :))))))))))))))
1 réponse
-
ModérateurLe minimum est une loi associative donc on a : min(X,Y,Z)=min(min(X,Y),Z)=min(X,min(Y,Z))
En partant de ce constat, ça devient super simple :
inf(M,X,Y) :- X @=< Y, M=X. min(M,X,Y) :- inf(M,X,Y); inf(M,Y,X). min(M,X,Y,Z) :- min(N,X,Y), min(M,N,Z).
Exemples :
?- min(M,1,2,3). M = 1. ?- min(X,3,1,2). X = 1. ?- min(S,toto,titi,tata). S = tata.