Для каждого элемента списка написать количество его вхождений. 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д