Подсчитать количество появлений числа в списке

Я пишу программу на прологе, которая подсчитывает количество вхождений числа в список

count([],X,0).
count([X|T],X,Y):- count(T,X,Z), Y is 1+Z.
count([_|T],X,Z):- count(T,X,Z).

, и это результат

?- count([2,23,3,45,23,44,-20],X,Y).
X = 2,
Y = 1 ;
X = 23,
Y = 2 ;
X = 23,
Y = 1 ;
X = 3,
Y = 1 ;
X = 45,
Y = 1 ;
X = 23,
Y = 1 ;
X = 44,
Y = 1 ;
X = -20,
Y = 1 ;
false.

, он подсчитывает одно и то же число несколько раз

Любая помощь приветствуется

12
задан Ratzo 31 January 2012 в 22:35
поделиться