Объяснить програмку на Turbo-Prolog

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

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

Уважаемые, нужна ваша помощь в объяснении задачи на прологе. Сам пытался разобраться, ничего не выходит!
Листинг программы
  1. DOMAINS
  2. List = integer*
  3. PREDICATES
  4. intersection(List,List,List)
  5. member(integer,List)
  6. view(List)
  7. GOAL
  8. A = [1,2,3,4,5], B = [4,5,6,7],
  9. intersection(A,B,C), write(C).
  10. CLAUSES
  11. member(X,[X|_]):-!.
  12. member(X,[_|T]):-
  13. member(X,T).
  14. intersection([],_,[]).
  15. intersection([H|T1],S2,[H|T]):-
  16. member(H,S2), !,
  17. intersection(T1,S2,T).
  18. intersection([_|T],S2,S):-
  19. intersection(T,S2,S).
  20. view([]):-!.
  21. view([H|T]):-
  22. write(H, ' '), view(T).
Спасибо!

Решение задачи: «Объяснить програмку на Turbo-Prolog»

textual
Листинг программы
  1. CLAUSES
  2. member(X,[X|_]):-!. %% искомый элемент стоит в начале списка - конец
  3. member(X,[_|T]):- %% если не в начале, ищем его в хвосте
  4.    member(X,T).
  5.  
  6. intersection([],_,[]). %% пересечение пустого списка с любым списком пусто
  7. intersection([H|T1],S2,[H|T]):- %% если голова первого входит во второй, то она входит и в пересечение
  8.    member(H,S2), !,
  9. intersection(T1,S2,T).
  10. intersection([_|T],S2,S):-  %% иначе пересечение = пересечению хвоста первого со вторым
  11.    intersection(T,S2,S).
  12.  
  13. view([]):-!.  %% список пуст - конец
  14. view([H|T]):- %% печатаем голову
  15.    write(H, ' '), view(T). %% печатаем хвост

Объяснение кода листинга программы

  1. Объявлены два типа функций:
    • member(X,[X|_]):-!.
    • member(X,[_|T]):- member(X,T).
  2. Объявлена функция intersection:
    • intersection([],_,[]).
    • intersection([H|T1],S2,[H|T]):- member(H,S2), !, intersection(T1,S2,T).
    • intersection([_|T],S2,S):- intersection(T,S2,S).
  3. Объявлена функция view:
    • view([]):-!.
    • view([H|T]):- write(H, ' '), view(T).

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


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

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

14   голосов , оценка 4.071 из 5

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

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

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