Exerciții Laboratorul 2, Exercițiul 8

dot/3 — produs scalar

Scrieți un predicat dot/3 al cărui prim argument este o listă de întregi, al doilea argument este tot o listă de întregi, de lungimea primeia, iar al treilea argument este produsul scalar dintre primele două argumente.

Reamintim că:

$$ \mathrm{dot}(v, w) = \sum_{i=1}^{n} v_i \cdot w_i $$

?- dot([2, 5, 6], [3, 4, 1], Result).
Result = 32

Hint: recursie în paralel pe cele două liste (pattern-ul „zip"); cazul de bază dot([], [], 0).

Te-ai blocat?
editor soluție
?-
Tastează o interogare (ex. father_of(sandra, X).) și apasă Enter — sau apasă pe un caz de test de mai jos.
Cazuri de test (3 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
dot([2, 5, 6], [3, 4, 1], Result). așteptat: Result = 32
?
dot([], [], Result). așteptat: Result = 0
?
dot([1, 2], [3, 4], Result). așteptat: Result = 11