TEKNILLINEN KORKEAKOULU Tietojenkäsittelyopin laboratorio Logiikkaohjelmointi Tik-76.144 SYKSY 1998 4. kotitehtävä Henna Pietiläinen Ti 45356D 4.a. intersection([], X, []). intersection([H|T], X, Intersection) :- member(H, X), member(H, Intersection), delete(Intersection, H, I2), intersection(T, X, I2). intersection([H|T], X, Intersection) :- not(member(H, X)), not(member(H, Intersection)), intersection(T, X, Intersection). member(H, [H|T]). member(Z, [X|Y]) :- member(Z, Y). delete([H|T], H, X) :- delete(T, H, X). delete([H|T], Z, [X|Y]) :- H \== Z, delete(T, Z, Y). delete([], X, []). not(X) :- X, !, fail. not(X). 4.b. tree_list(Tree, List) :- preorder(Tree, List). preorder(tree(L, X, R), List) :- preorder(L, Lefts), preorder(R, Rights), append([X|Lefts], Rights, List). preorder(0, []). append([], Ylist, Ylist). append([X|Xlist], Ylist, [X|Zlist]) :- append(Xlist, Ylist, Zlist).