[SWI-Prolog] Умножение двух многочленов от одной переменной
Формулировка задачи:
Здравстуйте, подскажите пожалуйста по задачке: надо создать программу умножающая два многочлена от одной переменной. В сущности, получается можно использовать умножение двух списков.
Возможно использовать такую функцию для умножения многочленов? Заранее спасибо
Листинг программы
- str([],L,L).
- sum_str([],_,_):-write("Error"),nl,fail.
- sum_str(_,[],_):-write("Error"),nl,fail.
- sum_str([X],[Y],[R]) :- R = X*Y,!.
- sum_str([X|L],[Y|L1],[H|T]) :- H = X*Y,sum_str(L,L1,T).
Решение задачи: «[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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д