Создать список - Prolog

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

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

Даны два непустых списка целых чисел L1 и L2. Создать программу, которая находит значение Xmax максимального элемента в списке L1 и строит список L3, состоящий (без повторений) из элементов списка L2, встречающихся в нем ровно Xmах раз. Запрос: R(L1,L2, Xmax, L3). Помогите, пожалуйста)

Решение задачи: «Создать список»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. max_el(intl,int)
  7. del_all(intl,int,intl)
  8. counter(intl,int,int)
  9. filt_count(intl,int,intl)
  10. task(intl,intl,intl)
  11.  
  12. clauses
  13. max_el([X],X).
  14. max_el([H|T],R) :- max_el(T,R), H<=R.
  15. max_el([H|T],H) :- max_el(T,R1), H>R1.
  16.  
  17. del_all([],_,[]).
  18. del_all([X|T],X,R) :- del_all(T,X,R).
  19. del_all([H|T],X,[H|R]) :- del_all(T,X,R), H<>X.
  20.  
  21. counter([],_,0).
  22. counter([H|T],H,R) :- counter(T,H,R1), R=R1+1.
  23. counter([X|T],H,R) :- H<>X, counter(T,H,R).
  24.  
  25. filt_count([],_,[]).
  26. filt_count([H|T],N,[H|TT]) :- counter([H|T],H,N), del_all(T,H,T1), filt_count(T1,N,TT).
  27. filt_count([H|T],N,TT) :- counter([H|T],H,N1), N<>N1, del_all(T,H,T1), filt_count(T1,N,TT).
  28.  
  29. task(L1,L2,L3) :- max_el(L1,MAXL), filt_count(L2,MAXL,L3).

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


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

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

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы