.


:




:

































 

 

 

 





. , , . ( ) . .

( Domains).

.

20. "". , , : , . , , . , : , , . " ", .

, . , (, , ) :

Domains

data=dat(integer,string,integer)

work=worker(string,integer);notwork

, , :

memfam=mem(string,string,data,work)

:

family(mem(jon,kelly,dat(17,may,1950),worker(bbz,15000)),

mem(bony,kelly,dat(29,may,1951),notwork)),

[mem(pat,kelly,dat(5,april,1983),notwork),

mem(liz,kelly,dat(10,april,1960),notwork)).

family(mem(bob,rob,dat(14,may,1930),worker(pla,12000)),

mem(sally,rob,dat(5,october,1931),worker(plt,11000)),[ ]). %

. , kelly :

goal family(mem(_,kelly,_,_),_,_).

, .

:

goal family(X,_, [_,_,_]).

, , :

goal family(_, mem(Name,Fam,_,_),[_,_,_|_]).

, , , .. .

, . . :

husband(X):family(X,_,_). % X ìóæ

vife(X):family(_,X,_). % X

child(X):family(_,_,Children), % X

member(X,Children).

exist(X):husband(X); vife(X); child(X). % X

dohod(mem(_,_,_,worker(_,D)),D). % D

dohod(mem(_,_,_,notwork),0). % 0

, , :

1) :

Goal exist(mem(Nam,Fam,_,_)).

2) :

Goal vife(mem(Nam,Fam,_,worker(_,_))).

3) , 8000:

Goal exist(Man), dohod(Man,D), D<8000.

21. " ". ,,. N , . C, B :

1) ;

2) ;

3) , .

, : .

"" , , . move. : , . , N-1 , N-1 , .

domains

loc = right; middle; left

predicates

hanoi(integer)

move(integer, loc, loc, loc)

inform(loc, loc)

clauses

hanoi(N): move(N, left, middle, right). %

move(1, A, _, C): inform(A, C),!. %

move(N, A, B, C): % N

N1=N-1, move(N1, A, C, B),

inform(A, C), move(N1, B, A, C).

inform(Loc1, Loc2): write("\nMove a disk from ", Loc1, " to ", Loc2).

Goal hanoi(10). % 10





:


: 2015-10-01; !; : 335 |


:

:

, .
==> ...

2017 - | 1815 -


© 2015-2024 lektsii.org - -

: 0.009 .