append([], X, [X]). append([H|L], X, [H | L1]) :- append(L, X, L1). removelast([X], [], X). removelast([A|B],[A|C], D) :- removelast(B, C, D). swap([], []). swap([X], [X]). swap([X1|X2], [Z2|Z3]) :- removelast([X1|X2], [Z|Z1], Z2), append(Z1, Z, Z3). modify(_, _, [], []). modify(0, X, [_|B], [X|B]). modify(X, Y, [A|B], [A|D]) :- X>0, Z is X-1, modify(Z, Y, B, D). distance1([],[], 0). distance1([H1|L1], [H2|L2], X):- Y is (H1-H2)*(H1-H2), distance1(L1, L2, Z), X is Y+Z. distance(V1, V2, D):- distance1(V1, V2, D1), D is sqrt(D1).