Re: Примеры программ на PROLOG
predicates
решение(real,real)
clauses
решение(Y,X):-
X<=2,
A=Y+sin(X),
B=X+1/10,
решение(A,B).
решение(Y,X):-
X>2,
write("Ответ: ",Y," ").
goal
Y=0,
X=1,
решение(Y,X).
Re: Примеры программ на PROLOG
predicates
f(real, real)
f(real, real, real, real)
pow(integer, integer, integer)
clauses
pow(X, Y, M) :- M=exp(Y*ln(X)).
f(N, FN) :- f(N, FN, 1, 2).
f(N, FN, N, FN) :- !.
f(N, FN, I, P) :-
NewI = I+1,
pow(2, NewI, M),
NewP = P+M,
f(N, FN, NewI, NewP).
goal
X=2, f(X, FX).
Re: Примеры программ на PROLOG
predicates
f(real, real)
pow(integer, integer, integer)
clauses
pow(X, Y, M) :- M=exp(Y*ln(X)).
f(1, 2) :- !.
f(X, FX) :-
Y = X-1,
f(Y, FY),
pow(2, X, M),
FX = M+FY.
goal
X=4, f(X, FX).
Re: Примеры программ на PROLOG
predicates
f(real, real)
f(real, real, real, real)
clauses
f(N, FN) :- f(N, FN, 1, 0.5).
f(N, FN, N, FN) :- !.
f(N, FN, I, P) :-
NewI = I+1,
NewP = P*(1-(1/(NewI*2))),
f(N, FN, NewI, NewP).
goal
X=10, f(X, FX).
Re: Примеры программ на PROLOG
predicates
f(real, real)
clauses
f(1, 0.5) :- !.
f(X, FX) :-
Y = X-1,
f(Y, FY),
FX = (1-(1/(X*2)))*FY.
goal
X=10, f(X, FX).
Re: Примеры программ на PROLOG
domains
treetype = tree (string, treetype, treetype); empty ()
predicates
max(integer, integer, integer)
print_all_elements (treetype, integer, integer)
clauses
max(X, Y, X) :- X>Y, !.
max(X, Y, Y) :- Y>X, !.
print_all_elements (empty, N, MAX):- max(N, MAX, M), M>MAX, write(M), nl, !.
print_all_elements (tree (X, Y, Z), N, M):-
write (X), nl, N1 = N + 1,
print_all_elements (Y, N1, M),
print_all_elements (Z, N1, M).
goal
print_all_elements (tree ("Катя",
tree ("Миша",
tree ("Вова", empty, empty),
tree ("Лида",
tree ("Маша", empty, empty),
tree ("Дуся",
tree ("Ира", empty, empty),
tree ("Вася", empty, empty)))),
tree ("Люда",
tree ("Зина", empty, empty),
tree ("Петя", empty, empty))), 0, 0).
Re: Примеры программ на PROLOG
domains
treetype = tree(string, treetype, treetype); empty()
predicates
pp(treetype, integer)
po(treetype)
clauses
po(empty).
po(tree(X, _, _)) :- write(X), nl, !.
pp(empty, _).
pp(tree(X, _, _), 0) :- write(X).
pp(tree(_, Y, Z), N) :- N1 = N+1, po(Y), po(Z), pp(Y, N1), pp(Z, N1).
goal
pp(tree("Katia",
tree("Misha",
tree("Vova", empty, empty),
tree("Lida", empty, empty)),
tree("Liuda",
tree("Zina", empty, empty),
tree("Petia", empty, empty))),
0), nl, fail; true.
Re: Примеры программ на PROLOG
domains
treetype = tree(string, treetype, treetype); empty()
argument=real
result=real
predicates
pp(treetype, integer)
print(treetype)
prob(integer)
clauses
prob(0):-!.
prob(N):-write(" "),N1=N-1, prob(N1).
print(empty).
print(tree(X, _, _)) :- write(X), nl, !.
pp(empty, _).
pp(tree(X, _, _), 0) :- write(X),write("\n").
pp(tree(_, Y, Z), N) :- N1 = N+1, prob(N),print(Y),prob(N),print(Z),pp(Y, N1),pp(Z, N1).
goal
pp(tree("Anna(0)",
tree("Victor(1)",
tree("Alexandr(2)", empty, empty),
tree("Joneya(2)", empty, empty)),
tree("Luda(1)",
tree("Vic(2)", empty, empty),
tree("vicki(2)", empty, empty))),
0), nl, fail; true.
Re: Примеры программ на PROLOG
/* Обход дерева "сначала вглубь" и печать каждого элемента, который попадается на пути. */
domains
treetype = tree (string, treetype, treetype); end()
predicates
writetree (treetype)
clauses
writetree (end).
writetree (tree (X, Y, Z)):-
write (X),
writetree (Y),
writetree (Z) ,T=+1, write(T).
goal
writetree (tree ("Катя",
tree ("Миша",
tree ("Вова", end, end),
tree ("Лида", end, end)),
tree ("Люда",
tree ("Зина", end, end),
tree ("Петя", end, end)))),nl,fail;true.
Re: Примеры программ на PROLOG
/* Простые процедуры построения дерева
create_tree (A, B) помещает A в поле данных одноузлового
дерева B
insert_left (A, B, C) вставляет A как левое поддерево B
и присваивает результат C
insert_right (A, B, C) вставляет A как правое поддерево
B и присваивает результат C */
domains
treetype = tree (string, treetype, treetype); empty ()
predicates
create_tree (string, treetype)
insert_left (treetype, treetype, treetype)
insert_right (treetype, treetype, treetype)
run
clauses
create_tree (A, tree (A, empty, empty)).
insert_left (X, tree (A, _, B), tree (A, X, B)).
insert_right (X, tree (A, B, _), tree (A, B, X)).
run:-
/* Сначала создадим несколько одноузловых деревьев*/
create_tree ("Вова", V),
create_tree ("Лида", Ld),
create_tree ("Миша", M),
create_tree ("Зина", Z),
create_tree ("Петя", P),
create_tree ("Люда", L),
create_tree ("Катя", K),
/*...затем соединим их... */
insert_left (V, M, M2),
insert_right (Ld, M2, M3),
insert_left (Z, L, L2),
insert_right (P, L2, L3),
insert_left (M3, K, K2),
insert_right (L3, K2, K3),
/*...и печатаем результат. */
write (K3, '\n').
goal
run.
Re: Примеры программ на PROLOG
/*
*/
predicates
sum(integer,real)
member(integer,real)
sum(real,real,real,real)
clauses
member(Y,R):-A=2*Y,B=A+1,R=A/B.
sum(N,R):-sum(N,R,N,1).
sum(N,R,0,R):-!.
sum(N,R,L,P):-member(L,R1),
L1=L-1,
P1=P*R1,
sum(N,R,L1,P1).
goal
sum(2,R1).
Re: Примеры программ на PROLOG
predicates
f(real, real)
clauses
f(1, 0.5) :- !.
f(X, FX) :-
Y = X-1,
f(Y, FY),
FX = (1-(1/(X*2)))*FY.
goal
X=10, f(X, FX).
Re: Примеры программ на PROLOG
predicates
factorial(interger, real)
rez(integer)
clauses
factorial(1, 1) :- !.
factorial(X, FactX) :-
Y = X-1,
factorial (Y, FactY),
FactX = X*FactY*2.
rez(ZZ):-factorial(ZZ,FactX),
A=FactX*2,
write("Result",A),nl.
goal
rez(4).
Re: Примеры программ на PROLOG
predicates
r(long)
%r(unsigned, long,unsigned, long)
do
clauses
%r(N, NewPr):- r(N, NewPr,1,1).
%r(N, NewPr,N, NewPr):- !.
r(X):- X>100,write("\nNO\n"),!.
r(X):- X=81,write("\nYES\n"),!.
r(X):- NewX=X*X,%write(NewX),
r(NewX).
do:-write("Ввведите "), readint(X), r(X). %write("Сумма=", Pr,"\n").
goal
do.
Re: Примеры программ на PROLOG
predicates
sum(integer,real)
member(integer,real)
sum(real,real,real,real)
clauses
member(Y,R):-A=2*Y,B=A+1,R=A/B.
sum(N,R):-sum(N,R,N,1).
sum(N,R,0,R):-!.
sum(N,R,L,P):-member(L,R1),
L1=L-1,
P1=P*R1,
sum(N,R,L1,P1).
goal
sum(2,R1).
Re: Примеры программ на PROLOG
predicates
sum(integer,real)
cosinus(integer,real)
sum(real,real,real,real)
clauses
cosinus(Y,R):-A=ln(1),B=Y*A,St=exp(B),R=cos(St).
sum(N,R):-sum(N,R,1,0).
sum(N,R,N,R):-!.
sum(N,R,L,P):-cosinus(L,R1),L1=L+1,
P1=P+R1,
sum(N,R,L1,P1).
goal
sum(5,R1).