1

Тема: PROLOG

Лабораторные на  PROLOG

predicates
   man(symbol)
   woman(symbol)
   parent(symbol, symbol)
   suprug(symbol, symbol)
   nevestka (symbol, symbol)
   dever (symbol, symbol)

clauses
   man(sergey).
   man(dmitriy).
   man(valera).
   man(petr).
   man(mihail).
   man(nikolay).
   man(alex).
   man(alexandr).
   man(kostya).
   woman(barbara).
   woman(anna).
   woman(tatiana).
   woman(liza).
   woman(katya).   
   woman(juli).
   woman(raisa).
   woman(lyuda).
   
   parent(barbara, liza).
   parent(liza, alex).
   parent(alex, kostya).
   parent(anna, katya).
   parent(anna, petr).
   parent(sergey, katya).
   parent(sergey, petr).
   parent(katya, juli).   
   parent(petr, alex). 
   parent(petr, alexandr).
   parent(alexandr, lyuda).
   parent(juli, lyuda).
   parent(tatiana, mihail).
   parent(dmitriy, mihail).
   parent(mihail, juli).
   parent(valera, nikolay).
   parent(nikolay, raisa).
   parent(raisa, kostya).
   
   suprug (anna, sergey).
   suprug (tatiana, dmitriy).
   suprug (liza, petr).
   suprug (katya, mihail).
   suprug (raisa, alex).
   suprug (juli, alexandr).
   
   nevestka (X, Y):-
   parent (H, Y),
   parent (H, B),
   Y<>B,
   suprug (X, B),
   woman(X),
   man(B).
   
   nevestka (X, Y):-
   parent (Y, S),
   man(S),
   suprug (X,S),
   woman(X).
   
   dever (X, Y):-
   suprug (Y, M),
   man(M),
   woman(Y),
   parent(R, X),
   parent(R, M),
   X<>M,
   man(X).
   
   goal
   nevestka (Who, Whom),
   write ("Tetya ");
   dever (Who, Whom),
   write ("_Dever  ").

Поделиться

2

Re: PROLOG

predicates
   man(symbol)
   woman(symbol)
   parent(symbol, symbol)
   tetya (symbol, symbol)
   dyadya (symbol, symbol)
clauses
   man(sergey).
   man(dmitriy).
   man(valera).
   man(petr).
   man(mihail).
   man(nikolay).
   man(alex).
   man(alexandr).
   man(kostya).
   woman(barbara).
   woman(anna).
   woman(tatiana).
   woman(liza).
   woman(katya).   
   woman(juli).
   woman(raisa).
   woman(lyuda).
   
   parent(barbara, liza).
   parent(liza, alex).
   parent(alex, kostya).
   parent(anna, katya).
   parent(anna, petr).
   parent(sergey, katya).
   parent(sergey, petr).
   parent(katya, juli).   
   parent(petr, alex). 
   parent(petr, alexandr).
   parent(alexandr, lyuda).
   parent(juli, lyuda).
   parent(tatiana, mihail).
   parent(dmitriy, mihail).
   parent(mihail, juli).
   parent(valera, nikolay).
   parent(nikolay, raisa).
   parent(raisa, kostya).
   
   tetya (X, Y):-
   woman (X),
   parent (H, X),
   parent (H, M),
   M<>X,
   parent (M, Y).
   
   dyadya (X1, Y1):-
   man (X1),
   parent (H1, X1),
   parent (H1, M1),
   M1<>X1,
   parent (M1, Y1).
   goal
   tetya (What, Whom),
   write ("Tetya ");
   dyadya (What, Whom),
   write ("_Dyadya  ").

Поделиться

3

Re: PROLOG

predicates
   man(symbol)
   woman(symbol)
   parent(symbol, symbol)
   suprug(symbol, symbol)
   nevestka (symbol, symbol)
   dever (symbol, symbol)

clauses
   man(sergey).
   man(dmitriy).
   man(valera).
   man(petr).
   man(mihail).
   man(nikolay).
   man(alex).
   man(alexandr).
   man(kostya).
   woman(barbara).
   woman(anna).
   woman(tatiana).
   woman(liza).
   woman(katya).   
   woman(juli).
   woman(raisa).
   woman(lyuda).
   
   parent(barbara, liza).
   parent(liza, alex).
   parent(alex, kostya).
   parent(anna, katya).
   parent(anna, petr).
   parent(sergey, katya).
   parent(sergey, petr).
   parent(katya, juli).   
   parent(petr, alex). 
   parent(petr, alexandr).
   parent(alexandr, lyuda).
   parent(juli, lyuda).
   parent(tatiana, mihail).
   parent(dmitriy, mihail).
   parent(mihail, juli).
   parent(valera, nikolay).
   parent(nikolay, raisa).
   parent(raisa, kostya).
   
   suprug (anna, sergey).
   suprug (tatiana, dmitriy).
   suprug (liza, petr).
   suprug (katya, mihail).
   suprug (raisa, alex).
   suprug (juli, alexandr).
   
   nevestka (X, Y):-
   parent (H, Y),
   parent (H, B),
   Y<>B,
   suprug (X, B),
   woman(X),
   man(B).
   
   nevestka (X, Y):-
   parent (Y, S),
   man(S),
   suprug (X,S),
   woman(X).
   
   dever (X, Y):-
   suprug (Y, M),
   man(M),
   woman(Y),
   parent(R, X),
   parent(R, M),
   X<>M,
   man(X).
   
   goal
   nevestka (Who, Whom),
   write ("Tetya ");
   dever (Who, Whom),
   write ("  Dever  ").

Поделиться

4

Re: PROLOG

predicates
igrok(symbol)
liga_1(symbol)
liga_2(symbol)
liga_3(symbol)
vizov(symbol, symbol)
nomer (symbol, unsigned)

clauses
   igrok(sergey).
   igrok(dmitriy).
   igrok(valera).
   igrok(petr).
   igrok(mihail).
   igrok(nikolay).
   igrok(alex).
   igrok(alexandr).
   igrok(kostya).
   igrok(barbara).
   igrok(anna).
   igrok(tatiana).
   
   liga_1(sergey).
   liga_1(dmitriy). 
   liga_1(valera).
   liga_1(petr).
 
   liga_2(mihail).
   liga_2(nikolay).
   liga_2(alex).
   liga_2(alexandr).
   
   liga_3(kostya).
   liga_3(barbara).
   liga_3(anna).
   liga_3(tatiana).
   
   nomer (sergey, 1).
   nomer (dmitriy, 2).
   nomer (valera, 3).
   nomer (petr, 4).
   
   nomer (mihail, 5).
   nomer (nikolay, 6).
   nomer (alex, 7).
   nomer (alexandr, 8).
   
   nomer (kostya, 9).
   nomer (barbara, 10).
   nomer (anna, 11).
   nomer (tatiana, 12).
   
   vizov (X, Y):-
   igrok(X),
   igrok(Y),
   liga_1(X),
   X<>Y,
   nomer(X, N1),
   nomer(Y, N2),
   N1 < N2,
   liga_1(X),
   not (liga_3(Y)).

   vizov (X, Y):-
   igrok(X),
   igrok(Y),
   liga_2(X),
   X<>Y,
   nomer(X, N1),
   nomer(Y, N2),
   N1 < N2,
   not (liga_1(Y)).   
   
   vizov (X, Y):-
   igrok(X),
   igrok(Y),
   liga_3(X),
   X<>Y,
   nomer(X, N1),
   nomer(Y, N2),
   N1 < N2,
   liga_3(Y). 
   
goal
vizov(What, Whom).

Поделиться

5

Re: PROLOG

predicates
mesto(symbol)
raspr_mesto(symbol, symbol, symbol)

clauses
mesto(pervoe).
mesto(vtoroe).
mesto(tretie).

raspr_mesto(U,G,T):-
mesto(U),
mesto(G),
mesto(T),
U<>G,
G<>T,
U<>T,
not(G=vtoroe),
not(G=tretie),
not(T=tretie).

goal
raspr_mesto(Ura, Grisha, Tolya).

Поделиться

6

Re: PROLOG

predicates
    nacionalnost(symbol)
    sport(symbol)
    kto_kakoy_nacionalnosty(symbol,symbol,symbol)
    kto_kakym_sportom_uvlekaetsya(symbol,symbol,symbol)

    clauses
    nacionalnost(amerikanec).
    nacionalnost(izrailtyanen).
    nacionalnost(avstraliec).

    sport(basketbol).
    sport(tenis).
    sport(kriket).

    kto_kakoy_nacionalnosty(M,S,R):-
    nacionalnost(M),
    nacionalnost(S),
    nacionalnost(R),
    M<>S,
    M<>R,
    S<>R,
    not(M=amerikanec),
    S=izrailtyanen.

    kto_kakym_sportom_uvlekaetsya(M,S,R):-
    sport(M),
    sport(S),
    sport(R),
    M<>S,
    M<>R,
    S<>R,
    M=basketbol,
    not(S=tenis).

    goal
    kto_kakoy_nacionalnosty(Maik,Saimon,Richard) or
    kto_kakym_sportom_uvlekaetsya(Maik,Saimon,Richard).

Поделиться

7

Re: PROLOG

predicates
flower(symbol)
grow(symbol, symbol, symbol)
clauses
flower(roses).
flower(margaretes).
flower(ann_ey).

grow(R, M, A):-
flower(R),
flower(M),
flower(A),
R<>M,
M<>A,
R<>A,
not(R=roses),
not(M=margaretes),
not(A=ann_ey),
not(R=margaretes).
goal
grow(Rose,Margaret,Ann).

Поделиться

8

Re: PROLOG

predicates
sum(unsigned, unsigned, real)

clauses
sum(1, A, 1):- !.
sum(N, A, Y):-
N1=N-1,
Y=1/exp((2*N-2)*ln(A))+Y1,
sum(N1, A, Y1).


goal
N=3,
A=2,
sum(N, A, Y).

Поделиться

9

Re: PROLOG

predicates
sum(unsigned, unsigned, real)

clauses
sum(1, A, 1):- !.
sum(N, A, Y):-
N1=N-1,
sum(N1, A, Y1),
Y=1/exp((2*N-2)*ln(A))+Y1.

goal
N=3,
A=2,
sum(N, A, Y).

Поделиться

10

Re: PROLOG

predicates
sum (unsigned, real, real)
sum (unsigned, real, real, unsigned, real, real)

clauses
sum(N,A,Y):-
sum(N,A,Y,1,A,1).
sum(N,A,Y,N,A,Y):-!.
sum(N,A,Y,N1,A,Y1):-
NN1=N1+1,
NY1=1/exp((2*NN1-2)*ln(A))+Y1,
sum(N,A,Y,NN1,A,NY1).

goal
A=2,
N=3,
sum(N,A,Y).

Поделиться

11

Re: PROLOG

predicates
p(unsigned, real)

clauses
p(2, 0.75):-!.
p(N,Y):-
N1=N-1,
p(N1,Y1),
Y=(1-1/(N*N))*Y1.

goal
N=4,
p(N,Y).

Поделиться

12

Re: PROLOG

predicates
p(unsigned, real)
p(unsigned, real, unsigned, real)

clauses
p(N,Y):-
p(N,Y,1,1).
p(N,Y,N,Y):- !.
p(N,Y,I,J):-
Ni=I+1,
Nj=(1-1/(Ni*Ni))*J,
p(N, Y, Ni, Nj).

goal
N=4,
p(N, Y).

Поделиться