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 :))))))))))))))

1 réponse

  1. Modérateur
    Le 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.
    1
    1. Merci Beaucoup C gentil de votre part
      0