Добавил:
shaaydar
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
% 1. Арифметические операции
% Факториал
fact(0, 1) :- !.
fact(N, X):- N1=N-1, fact(N1, X1), X=N*X1.
% Максимум списка
maxN([], X, X).
maxN([H|T], X, Y) :- X < H, maxN(T, H, Y).
maxN([H|T], X, Y) :- X >= H, maxN(T, X, Y).
% Минимум списка
minN([], X, X).
minN([H|T], X, Y) :- X > H, !, minN(T, H, Y).
minN([H|T], X, Y) :- minN(T, X, Y).
% Сумма списка
sumL([], 0).
sumL([H|T], X) :- sumL(T, X1), X = H + X1.
% Длина списка
len([], 0).
len([_|T], X) :- len(T, X1), X=1+X1.
% Середина списка
midN([], 0).
midN(L, Result) :- sumL(L, X), len(L, C), Result = X / C.
:- initialization(main, main).
main(Argv) :-
L = [1,2,3,4,5,-6,7,-3],
fact(5,F).
% Факториал
fact(0, 1) :- !.
fact(N, X):- N1=N-1, fact(N1, X1), X=N*X1.
% Максимум списка
maxN([], X, X).
maxN([H|T], X, Y) :- X < H, maxN(T, H, Y).
maxN([H|T], X, Y) :- X >= H, maxN(T, X, Y).
% Минимум списка
minN([], X, X).
minN([H|T], X, Y) :- X > H, !, minN(T, H, Y).
minN([H|T], X, Y) :- minN(T, X, Y).
% Сумма списка
sumL([], 0).
sumL([H|T], X) :- sumL(T, X1), X = H + X1.
% Длина списка
len([], 0).
len([_|T], X) :- len(T, X1), X=1+X1.
% Середина списка
midN([], 0).
midN(L, Result) :- sumL(L, X), len(L, C), Result = X / C.
:- initialization(main, main).
main(Argv) :-
L = [1,2,3,4,5,-6,7,-3],
fact(5,F).
Соседние файлы в папке лаба 5