Формирование списка - Prolog (227051)
Формулировка задачи:
Если надо просто перемножить элементы списка - я делаю так:
А как сделать так - чтобы выполнялось условие?
Сформировать список L1 из элементов: произведение всех n элементов, произведение последних (n-1) элементов L и т.д.
Решение задачи: «Формирование списка»
textual
Листинг программы
domains int=integer intl=int* predicates prod(intl,int,int) len(intl,int) plist(intl,int,intl) task(intl,intl) clauses prod(_,0,1). prod([H|T],K,P) :- K1=K-1, prod(T,K1,Q), P=H*Q. len([],0). len([_|T],K) :- len(T,N), K=N+1. plist(_,0,[]). plist(X,K,[H|T]) :- prod(X,K,H), K1=K-1, plist(X,K1,T). task(X,R) :- len(X,L), plist(X,L,R). goal task([1,2,3,4,5,6,7],Z),write(Z),nl.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д