1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
silnia(N, F) :- N > 0, N1 is N - 1, silnia(N1, F1), F is F1 * N. silnia(0, 1). silnia(N, A, F) :- A1 is A * N, N > 0, N1 is N - 1, silnia(N1, A1, F). silnia(0, A, A). srednia(L, A1, A2, S) :- [H|T] = L, A12 is A1 + H, A21 is A2 + 1, srednia(T, A12, A21, S). srednia([], A1, A2, S) :- S is A1 / A2. odwracaj(L, A, R) :- [H|T] = L, [H|A] = A1, odwracaj(T, A1, R). odwracaj([], A, A). najwiekszy([H|T], M) :- najwiekszy([H|T], H, M). najwiekszy(L, A, M) :- [H|T] = L, H > A, najwiekszy(T, H, M). najwiekszy(L, A, M) :- [H|T] = L, H =< A, najwiekszy(T, A, M). najwiekszy([], A, A). zamiana(L, W) :- [H|T] = L, [H2|T2] = T, H =< H2, zamiana(T, W1), W = [H|W1]. zamiana(L, W) :- [H|T] = L, [H2|T2] = T, H > H2, T1 = [H|T], W1 = [H|T2], W = [H2|W1]. zamiana([], W). bubble(L, X) :- zamiana(L,S), !, bubble(S, X). bubble(X, X). inserts([], X, []). inserts(L, X, W) :- [H|T] = L, H =< X, inserts(T, X, W1), W = [H|W1]. inserts(L, X, W) :- [H|T] = L, H > X, T1 = [H|T], W = [X|T1]. insertsort(L, S) :- [H|T] = L, inserts(T, H, S1), insertsort(T, S). insertsort([], S). %^inserts(L, X, W) - lista jest posortowana, o ile do jej posortowanego ogona wstawimy w odpowiednim miejscu jej glowe