/* * Opgaver til Prolog fra ugeseddel 10/11 * Eksamen 2000 januar */ /* Opgave 1b */ p(1). p(2) :- !. p(3). /* * p(X) giver X=1 ; X=2 ; no * p(X), p(Y) giver X=1 Y=1 ; X=1 Y=2 ; X=2 Y=1 ; X=2 Y=2 ; no * p(X), !, p(Y) giver X=1 Y=1 ; X=1 Y=2 ; no */ /* Opgave 4a */ maxtree(InTree, OutTree) :- max_value(InTree, Max), force_value(InTree, Max, OutTree). max_value([], 0). max_value(n(V,OL,OR), Max) :- max_value(OL, LeftMax), max_value(OR, RightMax), max_list([V,LeftMax, RightMax], Max). force_value([], _, []). force_value(n(_,L,R), Max, n(Max, NewL, NewR)) :- force_value(L, Max, NewL), force_value(R, Max, NewR). /* Opgave 4b */ maxtree2(InTree, OutTree) :- mt(InTree, Max, OutTree, Max). mt([], 0, [], _). mt(n(V,OL,OR), Max, n(InsMax, NL, NR), InsMax) :- mt(OL, LeftMax, NL, InsMax), mt(OR, RightMax, NR, InsMax), max_list([V, LeftMax, RightMax], Max).