i Anzahl der Instanzen in einer Liste ...Prolog: Befestigungs mehr Antworten (mit cut?)
count(_,[],N,N).
count(Elem,[Elem|List],N,M) :- !, N1 is N+1, count(Elem,List,N1,M).
count(Elem,[_|List],N,M) :- count(Elem,List,N,M).
Also, ich schrieb dies auf zwei Wege in Prolog und die erste Werk verlasse ich (oben), aber ich war neugierig zu wissen, warum die zweite nicht (oder vielmehr, wird mir mehrere Antworten geben - nur die erste ist richtig), warum ist das?
vielen Dank
count(Z,X,R) :- count2(Z,X,R,0).
count2(W,[H|T],L,A):- (W == H), Lnew is A+1, count2(W,T,L,Lnew).
count2(W,[H|T],L,A):- count2(W,T,L,A).
count2(W,[],A,A).
Ich versuchte die zweite mit einem Schnitt, also: count (Z, X, R): - count2 (Z, X, R, 0). count2 (W, [H | T], L, A): -!, (W == H), Lnew ist A + 1, count2 (W, T, L, Lneu). count2 (W, [H | T], L, A): - count2 (W, T, L, A). count2 (W, [], A, A). aber das scheint auch nicht zu funktionieren, also dachte ich, vielleicht ist der Code grundsätzlich fehlerhaft –