diff --git a/prolog/day2.pl b/prolog/day2.pl new file mode 100644 index 0000000..1790b2a --- /dev/null +++ b/prolog/day2.pl @@ -0,0 +1,35 @@ +/**/ +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).