skriva(X,Y):-name(X,L1),name(Y,L2),skriva_liste(L1,L2). skriva_liste([],_):-!. skriva_liste([G|R],[G|R2]):-skriva_liste(R,R2). skriva_liste([G|R],[G2|R2]):-not (G is G2), skriva_liste([G|R],R2). dodaj_lista(X,L,[X|L]). /*skriva_element se poziva sa npr. skriva_element('milica',['milica','smicalica','a'],X). *X je lista svih atoma koji skrivaju 'milicu' */ skriva_element(X,[],[]):-!. skriva_element(X,[G|R],L):-skriva(X,G),dodaj_lista(G,L1,L),skriva_element(X,R,L1). skriva_element(X,[G|R],L):-skriva_element(X,R,L). dodati(_,[],L,L). dodati(X,[G|R],L,[s(X,G)|R1]):-dodati(X,R,L,R1). razliciti([],[]). razliciti([G|R],[G|R1]) :- not(pripada(G,R)),razliciti(R,R1). razliciti([G|R],L) :- razliciti(R,L). pripada(X,[X|_]). pripada(X,[_|R]):-pripada(X,R). parovi([],_,[]). parovi([G|R],L2,L3):-skriva_element(G,L2,T),parovi(R,L2,L4),dodati(G,T,L4,L5), razliciti(L5,L3). /* Poziva se sa npr. parovi([milica,ili,mili],[smicalica,mili,il,a],L). * Resenje je lista L */