SWI-Prolog definicja relacji

0

Witam, mam problem z zadaniem. Na pewno jest ono proste dla osób zaznajomionych z prologiem, nie wiem jak się za to zabrać. Proszę o pomoc albo o wskazówki :)

Zdefiniować relację iloczyn(L1,L2) prawdziwej gdy lista L2 zawiera elementy będące iloczynami kolejnych par elementów listy L1.
czyli np. dla list L1=[1,4,-3,2,5,5] i L2=[4,-6,25] relacja zwraca true.

1

Nie jestem wielkim specem prologa, i uzywam gprologa, ale wyszlo mi cos takiego:

rules.pl:
iloczyn([], []).
iloczyn([L1Head|L1Tail], [L2First|[L2Second|L2Tail]]) :- L1Head is L2First * L2Second, iloczyn(L1Tail, L2Tail).

i teraz w prologu:
| ?- [rules].
compiling /home/wujek/Playground/rules.pl for byte code...
/home/wujek/Playground/rules.pl compiled, 2 lines read - 755 bytes written, 13 ms

yes
| ?- iloczyn([6], [3, 2]).

yes
| ?- iloczyn([4, -6, 25], [1, 4, -3, 2, 5, 5]).

yes
| ?- iloczyn([4, -6, 25], [1, 4, -3, 2, 5, 4]).

no
| ?- iloczyn([4, -6, 25], [1, 4, -3, 2, 5]).

no

To [L1Head|L1Tail] (i zagniezdzenia w drugiej liscie) sie nazywa 'list deconstructing / destructuring', poczytaj zeby zrozumiec.

0

It works, dzięki wielkie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1