Формирование списка - 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.

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


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

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

12   голосов , оценка 4.333 из 5
Похожие ответы