[SWI-Prolog] Умножение двух многочленов от одной переменной
Формулировка задачи:
Здравстуйте, подскажите пожалуйста по задачке: надо создать программу умножающая два многочлена от одной переменной. В сущности, получается можно использовать умножение двух списков.
Возможно использовать такую функцию для умножения многочленов? Заранее спасибо
Решение задачи: «[SWI-Prolog] Умножение двух многочленов от одной переменной»
textual
Листинг программы
domains int=integer intl=int* predicates len(intl,int) elt(intl,int,int) pcoeff(intl,intl,int,int,int) coeff(intl,intl,int,int,int) poly_mult(intl,intl,int,intl) polymult(intl,intl,intl) clauses len([],0). len([_|T],N) :- len(T,N1), N=N1+1. elt([],_,0) :- !. elt([X|_],0,X) :- !. elt([_|T],N,X) :- N1=N-1, elt(T,N1,X). pcoeff(PX,PY,I,J,Q) :- elt(PX,I,XX), elt(PY,J,YY), Q=XX*YY. coeff(_,_,N,I,0) :- I>N, !. coeff(PX,PY,N,I,S) :- J=N-I, pcoeff(PX,PY,I,J,Q), I1=I+1, coeff(PX,PY,N,I1,S1), S=S1+Q. poly_mult(PX,PY,I,[]) :- len(PX,N1), len(PY,N2), N=N1+N2-2, I>N, !. poly_mult(PX,PY,I,[Q|T]) :- coeff(PX,PY,I,0,Q), I1=I+1, poly_mult(PX,PY,I1,T). polymult(PX,PY,R) :- poly_mult(PX,PY,0,R).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д