Dot product Prolog/3 need Hint for the SUM

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-02 02:25:45

问题


Good Day I am doing the problema of arithmetic in prolog and Yes its the dot Product I have Searched and found a mess of code that did not equal to what the book is asking me. Its a /3 so this is what i have so far but i need to sum the result of the product of both list. Any hint on what should be recommended to do?

    dot([HD|TL],[HD2|TL2],Result):-
       Mul is HD2 * HD,
       dot(TL,TL2,Mul),
       Result is Mul + Reuslt2.
    dot([],[],0).

回答1:


Your problems are that you're using Mul twice where you mean to use it once, and Reuslt2 doesn't exist anywhere. Probably what you mean is:

dot([], [], 0).
dot([H1|T1], [H2|T2], Result) :- 
  Prod is H1 * H2,
  dot(T1, T2, Remaining),
  Result is Prod + Remaining.



回答2:


You use SWI-Prolog, so you can try :

:- use_module(library(lambda)).
my_dot(L1,L2,R) :-
    foldl(\X^Y^Z^T^(T is X*Y + Z), L1,L2,0,R).


来源:https://stackoverflow.com/questions/20619516/dot-product-prolog-3-need-hint-for-the-sum

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!