Для каждого элемента списка написать количество его вхождений. TurboProlog

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста!Нужно написать программу на турбопрологе Построить список, определяющий сколько раз встречается каждый элемент в списке: (A B A C B C A B D) —> ((A 3) (B 3) (C 2) (D 1))

Решение задачи: «Для каждого элемента списка написать количество его вхождений. TurboProlog»

textual
Листинг программы
domains
int=integer
intl=int*
intll=intl*
 
predicates
counter(intl,int,int)
delall(intl,int,intl)
lcount(intl,intll)
 
clauses
counter([],_,0).
counter([X|T],X,C) :- counter(T,X,C1), C=C1+1.
counter([X|T],Y,C) :- X<>Y, counter(T,Y,C).
 
delall([],_,[]).
delall([X|T],X,R) :- delall(T,X,R).
delall([Y|T],X,[Y|R]) :- X<>Y, delall(T,X,R).
 
lcount([],[]).
lcount([H|T],[[H,Z]|R]) :- counter([H|T],H,Z), delall(T,H,Q), lcount(Q,R).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы