transpose1.pl

loading
details
attribute value
description
owner Johannes Waldmann
uploaded 2017-08-17 03:45:17.0
disk size 613 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
% Author: Thomas Stroeder
% terminating

%query: transpose(i,o).
transpose(A,B) :- transpose_aux(A,[],B).

transpose_aux([],Y,Z) :- !, eq(Y,Z).
transpose_aux(R,_,L) :-
   head(R,Rh),
   tail(R,Rt),
   row2col(Rh,L,Cols,Accm),
   transpose_aux(Rt,Accm,Cols).

row2col([],X,Y,Z) :- !, eq(X,[]), eq(Y,[]), eq(Z,[]).
row2col(X,Y,C,A) :-
   head(X,Xh),
   head(Y,Yh),
   head(Yh,Xh),
   head(A,[]),
   tail(X,Xt),
   tail(Y,Yt),
   tail(Yh,Yht),
   head(C,Yht),
   tail(C,Ct),
   tail(A,At),
   row2col(Xt,Yt,Ct,At).

head([],_).
head([H|_],H).

tail([],[]).
tail([_|T],T).

eq(X,X).
popout

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

actions get anonymous link download benchmark