Создать список - Prolog
Формулировка задачи:
Даны два непустых списка целых чисел L1 и L2. Создать программу, которая находит значение Xmax максимального элемента в списке L1 и строит список L3, состоящий (без повторений) из элементов списка L2, встречающихся в нем ровно Xmах раз. Запрос: R(L1,L2, Xmax, L3).
Помогите, пожалуйста)
Решение задачи: «Создать список»
textual
Листинг программы
domains int=integer intl=int* predicates max_el(intl,int) del_all(intl,int,intl) counter(intl,int,int) filt_count(intl,int,intl) task(intl,intl,intl) clauses max_el([X],X). max_el([H|T],R) :- max_el(T,R), H<=R. max_el([H|T],H) :- max_el(T,R1), H>R1. del_all([],_,[]). del_all([X|T],X,R) :- del_all(T,X,R). del_all([H|T],X,[H|R]) :- del_all(T,X,R), H<>X. counter([],_,0). counter([H|T],H,R) :- counter(T,H,R1), R=R1+1. counter([X|T],H,R) :- H<>X, counter(T,H,R). filt_count([],_,[]). filt_count([H|T],N,[H|TT]) :- counter([H|T],H,N), del_all(T,H,T1), filt_count(T1,N,TT). filt_count([H|T],N,TT) :- counter([H|T],H,N1), N<>N1, del_all(T,H,T1), filt_count(T1,N,TT). task(L1,L2,L3) :- max_el(L1,MAXL), filt_count(L2,MAXL,L3).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д