Объяснить програмку на Turbo-Prolog
Формулировка задачи:
Уважаемые, нужна ваша помощь в объяснении задачи на прологе. Сам пытался разобраться, ничего не выходит!
Спасибо!
Листинг программы
- DOMAINS
- List = integer*
- PREDICATES
- intersection(List,List,List)
- member(integer,List)
- view(List)
- GOAL
- A = [1,2,3,4,5], B = [4,5,6,7],
- intersection(A,B,C), write(C).
- CLAUSES
- member(X,[X|_]):-!.
- member(X,[_|T]):-
- member(X,T).
- intersection([],_,[]).
- intersection([H|T1],S2,[H|T]):-
- member(H,S2), !,
- intersection(T1,S2,T).
- intersection([_|T],S2,S):-
- intersection(T,S2,S).
- view([]):-!.
- view([H|T]):-
- write(H, ' '), view(T).
Решение задачи: «Объяснить програмку на Turbo-Prolog»
textual
Листинг программы
- CLAUSES
- member(X,[X|_]):-!. %% искомый элемент стоит в начале списка - конец
- member(X,[_|T]):- %% если не в начале, ищем его в хвосте
- member(X,T).
- intersection([],_,[]). %% пересечение пустого списка с любым списком пусто
- intersection([H|T1],S2,[H|T]):- %% если голова первого входит во второй, то она входит и в пересечение
- member(H,S2), !,
- intersection(T1,S2,T).
- intersection([_|T],S2,S):- %% иначе пересечение = пересечению хвоста первого со вторым
- intersection(T,S2,S).
- view([]):-!. %% список пуст - конец
- view([H|T]):- %% печатаем голову
- write(H, ' '), view(T). %% печатаем хвост
Объяснение кода листинга программы
- Объявлены два типа функций:
- member(X,[X|_]):-!.
- member(X,[_|T]):- member(X,T).
- Объявлена функция intersection:
- intersection([],_,[]).
- intersection([H|T1],S2,[H|T]):- member(H,S2), !, intersection(T1,S2,T).
- intersection([_|T],S2,S):- intersection(T,S2,S).
- Объявлена функция view:
- view([]):-!.
- view([H|T]):- write(H, ' '), view(T).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д