Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Простейшие функции на прологе. / simple1
.pl fact(0, 1).
fact(N, X):- N1 is N-1, fact(N1, Z), X = N * Z.
fib(0, 1).
fib(1, 1).
fib(N, F):- N1 is N-1, N2 is N-2, fib(N1, F1), fib(N2, F2), F is F1+F2.
aff(0, 0).
aff(1, 1).
aff(N, F):- N1 is N-1, N2 is N-2, aff(N1, F1), aff(N2, F2), F is (F1+F2)/2.
m(X, [X|List]).
m(X, [A|List]):-m(X, List).
length([], 0).
length([X|List], F):-length(List, F1), F is F1+1.
adda(X, L, [X|L]).
addz(X, [], [X]).
addz(X, [A|List], List1):-addz(X, List, Z), adda(A, Z, List1).
addn(X, 1, List, Listout):-adda(X, List, Listout).
addn(X, Number, [A|List], Listout):-Number1 is Number-1, addn(X, Number1, List, Z), adda(A, Z, Listout).
inverse([A], [A]).
inverse([A|List], List1):-inverse(List, Z), addz(A, Z, List1).
getn(1, [A|List], A).
getn(Number, [A|List], X):-Number>1, Number1 is Number-1, getn(Number1, List, X).
remove(X, [X|List], List).
remove(X, [A|List], ListOut):-member(X, List), A=\=X, remove(X, List, Z), adda(A, Z, ListOut).
removen(1, [X|List], List).
removen(Number, [A|List], Listout):-Number1 is Number-1, removen(Number1, List, Z), adda(A, Z, Listout).
iseql([], []).
iseql([X|List1], [X|List2]):-iseql(List1, List2).
mult(M, [], []).
mult(M, [X|List], Listout):-mult(M, List, Z), A is M*X, adda(A, Z, Listout).
plus(M, [], []).
plus(M, [X|List], Listout):-plus(M, List, Z), A is M+X, adda(A, Z, Listout).
minus(M, [], []).
minus(M, [X|List], Listout):-minus(M, List, Z), A is X-M, adda(A, Z, Listout).
div(M, [], []).
div(M, [X|List], Listout):-div(M, List, Z), A is X/M, adda(A, Z, Listout).
concat(L, [], L).
concat(List1, [X|List2], L):-addz(X, List1, Z), concat(Z, List2, L).
split(0, List, [], List).
split(1, [X|List], [X], List).
split(Number, List, List1, List2):-Number1 is Number-1, split(Number1, List, Y, Z), getn(1, Z, X), removen(1, Z, List2), addz(X, Y, List1).
scalar([], [], 0).
scalar([X|List1], [Y|List2], F):-scalar(List1, List2, F1), F is F1+X*Y.
norm(X, F):-scalar(X, X, F1), F is sqrt(F1).
fact(N, X):- N1 is N-1, fact(N1, Z), X = N * Z.
fib(0, 1).
fib(1, 1).
fib(N, F):- N1 is N-1, N2 is N-2, fib(N1, F1), fib(N2, F2), F is F1+F2.
aff(0, 0).
aff(1, 1).
aff(N, F):- N1 is N-1, N2 is N-2, aff(N1, F1), aff(N2, F2), F is (F1+F2)/2.
m(X, [X|List]).
m(X, [A|List]):-m(X, List).
length([], 0).
length([X|List], F):-length(List, F1), F is F1+1.
adda(X, L, [X|L]).
addz(X, [], [X]).
addz(X, [A|List], List1):-addz(X, List, Z), adda(A, Z, List1).
addn(X, 1, List, Listout):-adda(X, List, Listout).
addn(X, Number, [A|List], Listout):-Number1 is Number-1, addn(X, Number1, List, Z), adda(A, Z, Listout).
inverse([A], [A]).
inverse([A|List], List1):-inverse(List, Z), addz(A, Z, List1).
getn(1, [A|List], A).
getn(Number, [A|List], X):-Number>1, Number1 is Number-1, getn(Number1, List, X).
remove(X, [X|List], List).
remove(X, [A|List], ListOut):-member(X, List), A=\=X, remove(X, List, Z), adda(A, Z, ListOut).
removen(1, [X|List], List).
removen(Number, [A|List], Listout):-Number1 is Number-1, removen(Number1, List, Z), adda(A, Z, Listout).
iseql([], []).
iseql([X|List1], [X|List2]):-iseql(List1, List2).
mult(M, [], []).
mult(M, [X|List], Listout):-mult(M, List, Z), A is M*X, adda(A, Z, Listout).
plus(M, [], []).
plus(M, [X|List], Listout):-plus(M, List, Z), A is M+X, adda(A, Z, Listout).
minus(M, [], []).
minus(M, [X|List], Listout):-minus(M, List, Z), A is X-M, adda(A, Z, Listout).
div(M, [], []).
div(M, [X|List], Listout):-div(M, List, Z), A is X/M, adda(A, Z, Listout).
concat(L, [], L).
concat(List1, [X|List2], L):-addz(X, List1, Z), concat(Z, List2, L).
split(0, List, [], List).
split(1, [X|List], [X], List).
split(Number, List, List1, List2):-Number1 is Number-1, split(Number1, List, Y, Z), getn(1, Z, X), removen(1, Z, List2), addz(X, Y, List1).
scalar([], [], 0).
scalar([X|List1], [Y|List2], F):-scalar(List1, List2, F1), F is F1+X*Y.
norm(X, F):-scalar(X, X, F1), F is sqrt(F1).
Соседние файлы в папке Простейшие функции на прологе.