Min 3 entiers

ghyzlane b Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
ghyzlane b Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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. ghyzlane b Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci Beaucoup C gentil de votre part
      0