countstack2.pl

loading
details
attribute value
description
owner Johannes Waldmann
uploaded 2017-08-17 03:45:17.0
disk size 723 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/countstack.pl
% terminating

%query: countstack(i,o).
countstack(empty,0).
countstack(S,X) :- no(empty_stack(S)), pop(S,nil), popped(S,Pd), countstack(Pd,X).
countstack(S,s(X)) :- no(empty_stack(S)),
                      pop(S,P),
                      no(empty_list(P)),
                      head(P,H),
                      tail(P,T),
                      popped(S,Pd),
                      countstack(push(H,push(T,Pd)),X).

pop(empty,_).
pop(push(P,_),P).

popped(empty,empty).
popped(push(_,Pd),Pd).

head(nil,_).
head(cons(H,_),H).

tail(nil,nil).
tail(cons(_,T),T).

empty_stack(empty).

empty_list(nil).

no(X) :- X, !, failure(a).
no(_).

failure(b).
popout

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

actions get anonymous link download benchmark