prolog day 2

This commit is contained in:
Max Hohlfeld 2023-04-14 12:57:55 +02:00
parent 63c2afdf29
commit 036fc642ba

35
prolog/day2.pl Normal file
View File

@ -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).