Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Prolog] Подсчет числа вхождений


Автор: Apelsinovaya 5.12.2007, 18:56
Здравствуйте! Очень нужна ваша помощь. Необходимо подсчитать число вхождений заданного элемента в список.  Используемая программа- Strawberry Prolog.
Заранее спасибо!!!

Автор: Shaggie 15.1.2008, 14:04
Код не идеален, но работает.
Код

entry( [], _, 0).
entry( [Head | Tail], ToFind, Founded) :-
    entry( Tail, ToFind, Buffer),
    equals( Head, ToFind, Return),
    Founded is Buffer + Return.

equals( X, Y, Return) :-
    X =:= Y,
    Return is 1.
equals( X, Y, Return) :-
    X =\= Y,
    Return is 0.


Использование:
Цитата

1 ?- entry([1,4,6,3,3,7,4,2,5,3,9,7,3,2,8], 7, Result).

Result = 2

Yes


Добавлено @ 14:13
Упс, косяк со сравнением поправил.

Автор: St00nsa 17.5.2009, 22:26
Код

howMany([],_,0).
howMany([A|B],A,X):-!,howMany(B,A,Y), X is Y+1.
howMany([A|B],C,X):-howMany(B,C,X).


?-howMany([6,2,2,8,3],2,C),write(С).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)