[SWI-Prolog] Умножение двух многочленов от одной переменной

Узнай цену своей работы

Формулировка задачи:

Здравстуйте, подскажите пожалуйста по задачке: надо создать программу умножающая два многочлена от одной переменной. В сущности, получается можно использовать умножение двух списков.
Листинг программы
  1. str([],L,L).
  2. sum_str([],_,_):-write("Error"),nl,fail.
  3. sum_str(_,[],_):-write("Error"),nl,fail.
  4. sum_str([X],[Y],[R]) :- R = X*Y,!.
  5. sum_str([X|L],[Y|L1],[H|T]) :- H = X*Y,sum_str(L,L1,T).
Возможно использовать такую функцию для умножения многочленов? Заранее спасибо

Решение задачи: «[SWI-Prolog] Умножение двух многочленов от одной переменной»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. len(intl,int)
  7. elt(intl,int,int)
  8. pcoeff(intl,intl,int,int,int)
  9. coeff(intl,intl,int,int,int)
  10. poly_mult(intl,intl,int,intl)
  11. polymult(intl,intl,intl)
  12.  
  13. clauses
  14. len([],0).
  15. len([_|T],N) :- len(T,N1), N=N1+1.
  16.  
  17. elt([],_,0)    :- !.  
  18. elt([X|_],0,X) :- !.
  19. elt([_|T],N,X) :- N1=N-1, elt(T,N1,X).
  20.  
  21. pcoeff(PX,PY,I,J,Q) :- elt(PX,I,XX), elt(PY,J,YY), Q=XX*YY.
  22.  
  23. coeff(_,_,N,I,0)  :- I>N, !.
  24. 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.
  25.  
  26. poly_mult(PX,PY,I,[])    :- len(PX,N1), len(PY,N2), N=N1+N2-2, I>N, !.
  27. poly_mult(PX,PY,I,[Q|T]) :- coeff(PX,PY,I,0,Q), I1=I+1, poly_mult(PX,PY,I1,T).
  28.  
  29. polymult(PX,PY,R) :- poly_mult(PX,PY,0,R).

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


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

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

15   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы