2010-11-25 9 views
4

Je sais dans prolog nous demandons est-ce vrai ou faux, pouvons-nous aussi calculer par exemple moyen et comment le prédicat ressemble?calculer en prolog

+0

Comment les prédicats "ressemblent"? Je ne suis pas sûr de ce que tu veux dire. –

Répondre

4

Bien sûr, vous pouvez calculer la moyenne d'une liste de numéros et le prédicat ressemblerait à ceci:

average(List, Result) :- length(List, Len), sum(List, Sum), Result is Sum/Len. 

sum([], 0). 
sum([H|T], Sum) :- sum(T, Temp), Sum is Temp + H. 

Ensuite, vous obtenez:

?- average([1, 2, 3], X). 
X = 2. 
+0

il est en quelque sorte clair, si je veux avg de 3 chiffres par exemple est-ce juste ~~ moyenne (A, B, C): - Moyenne est (A + B + C)/3, il imprime vrai aucun résultat>< – Quiet

+0

La règle 'average (A, B, C): - La moyenne est (A + B + C)/3' n'a aucun sens, parce que' Average' est unbound, donc la règle va juste lier la valeur '(A + B + C)/3' à la variable "Average", puis retour vrai. Quelque chose comme «moyenne (A, B, C, moyenne): - Moyenne est (A + B + C)/3» serait plus significatif. – 3lectrologos

3

Prolog ne demander si quelque chose est vrai de faux. C'est une idée fausse commune. Prolog essaie de d'unifier les objectifs de requête avec des prédicats de programme. S'il réussit, il renvoie une affectation aux variables apparaissant dans la requête. Si elle échoue - Ce qui n'est pas censé être le cas courant - Elle renvoie "faux".

En ce qui concerne les moyennes, voir la réponse de 3electrologos.