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