btapplast.pl

loading
details
attribute value
description
owner Johannes Waldmann
uploaded 2017-08-17 03:45:17.0
disk size 983 Bytes
downloadable true
type
attribute value
name no_type
processor id 1
description this is the default benchmark type for rejected benchmarks and benchmarks that are not associated with a type.
owning community none
loading contents
% Adapted from LP/SGST06/btapplast.pl
% terminating

%query: goal(i,o,o).
goal(A,B,C) :- s2t(A,T), tapplast(T,B,C).

tapplast(L,X,Last) :- tappend(L,node(nil,X,nil),LX), tlast(Last,LX).

tlast(X,node(nil,X,nil)).
tlast(X,node(L,_,_)) :- tlast(X,L).
tlast(X,node(_,_,R)) :- tlast(X,R).

tappend(nil,Y,Z) :- !, eq(Y,Z).
tappend(T,T1,node(T1,X,T2)) :- left(T,nil), right(T,T2), value(T,X).
tappend(T,T2,node(T1,X,T2)) :- left(T,T1), right(T,nil), value(T,X).
tappend(T,T3,node(U,X,T2)) :- left(T,T1), right(T,T2), value(T,X), tappend(T1,T3,U).
tappend(T,T1,node(T1,X,U)) :- left(T,T1), right(T,T2), value(T,X), tappend(T2,T3,U).

s2t(0,L) :- !, eq(L,nil).
s2t(X,node(T,_,T)) :- p(X,P), s2t(P,T).
s2t(X,node(nil,_,T)) :- p(X,P), s2t(P,T).
s2t(X,node(T,_,nil)) :- p(X,P), s2t(P,T).
s2t(X,node(nil,_,nil)).

left(nil,nil).
left(node(L,_,_),L).

right(nil,nil).
right(node(_,_,R),R).

value(nil,nil).
value(node(_,X,_),X).

p(0,0).
p(s(X),X).

eq(X,X).
popout

content may be truncated. 'popout' for larger text window.

actions get anonymous link download benchmark