36 lines
606 B
Prolog
36 lines
606 B
Prolog
/**/
|
|
fib(0, [0]).
|
|
fib(1, [1,0]).
|
|
fib(N, [R, X, Y | Zs]) :-
|
|
N > 1,
|
|
N1 is N - 1,
|
|
fib(N1, [X, Y | Zs]),
|
|
R is X + Y.
|
|
|
|
% wrong naive impl
|
|
reverse([], []).
|
|
reverse([x], [x]).
|
|
reverse([Head|Tail], [RNew, Head]) :-
|
|
reverse(Tail, RNew).
|
|
|
|
accrev([H|T], Acc, R) :-
|
|
accrev(T, [H|Acc], R).
|
|
accrev([], R, R).
|
|
|
|
rev(L, R) :- accrev(L, [], R).
|
|
|
|
smol([S], S).
|
|
smol([H|T], S) :-
|
|
smol(T, Snew),
|
|
Snew < H -> S is Snew; S is H.
|
|
|
|
% not working
|
|
accsortt([], Acc, Acc).
|
|
accsortt([H1 | T], Acc, R) :-
|
|
H2 | T,
|
|
H1 < H2
|
|
-> accsortt(T, [H1, H2 | Acc], R);
|
|
accsortt(T, [H2, H1 | Acc], R).
|
|
|
|
sortt(L, R) :- accsortt(L, [], R).
|