, . , , . , , . - domains. , . , . .
12: , . personal_library, : personal_library= book (title, author, publisher, year), collection (collector, personal_library). book . , , 1990 , :
domains
collector, title, author, publisher = symbol
year = integer
personal_library = book (title, author, publisher, year)
predicates
collection (collector, personal_library)
clauses
collection (irina, book (Using Turbo Prolog, Yin with Solomon,Moscow, World, 1993)).
collection (petr, book (The art of Prolog, Sterling with Shapiro,Moscow, World, 1990)).
collection (anna, book (Prolog: a relation language and its applications, John Malpas,Moscow, Science, 1990)).
goal
collection (X, book(Y,_, _, 1990)
. . .
13: , .
domains
person, title, author, artist, album, type = symbol
thing = book (title, author); record (artist, album, type)
predicates
owns (person, thing)
clauses
owns (irina, book (Using Turbo Prolog, Yin with Solomon)).
owns (petr, book (The art of Prolog, Sterling with Shapiro)).
owns (anna, book (Prolog: a relation language and its applications, John Malpas)).
owns (irina, record (Elton John, Ice Fair, popular)).
owns (petr, record (Benny Goodman, The King of Swing,jazz)).
owns (anna record (Madonna, Madonna, popular)).
goal
owns (X, record(_, _, jazz)
14:
( 5 ). . , , , .
. : , , , . : , , -, .
|
|
:
1. , .
2. , .
3. , .
:
list_colours - , list_products - , name_shop - , address , chief, - , name_product , country - -, price .
shop , , q1,q2, q3 , , , q21, q31 , max , .
domains
list_colours = symbol*
list_products = product*
name_shop, address, chief, name_product, country = symbol
price =real
product = prod (name_product, price, country, list_colours)
facts
max(name_product, price)
predicates
shop (name_shop, address, chief, list_products)
q1(chief)
q2(name_product)
q21(name_product, list_products)
q3
q31(list_products)
clauses
shop("Company1","Debenko_5","Ivanov",[prod(table,3000,"Italy",[white, red, black]),prod(chair,4000,"Japan",[brown, grey])]).
shop("Company2","S.Lazo_4","Petrov",[prod(sofa,9000,"China",[brown, black]),prod(chair,5000,"England",[red, grey])]).
shop("Company3","Sadovaya_3","Sidorov",[prod(sofa,19000,"Mexico", [black, white])]).
shop("Company4","Dachnaya_2","Orlov",[prod(bookcase,7000,"Russia", [brown, black]),prod(table,6000,"Spain",[red,grey])]).
shop("Company5","Pobeda_1","Galkin",[prod(bed,5000,"China",[brown, black]),prod(arm_chair,21000,"Japan",[red, grey])]).
% : shop, , , F, A.
q1(F):-shop (_,A,F,_),write(A),nl.
% : shop, N L, q21, P L, q21 , , .
q2(P):-shop(N,_,_,L),q21(P,L),write(N),nl,fail.
q21(H,[H1|_]):-H1=prod(H,_,_,_).
q21(H,[_|T]):-q21(H,T).
% : max , , a 0, , , , , shop, L, q31, L, q31 , , , , max, retract , assert , .
|
|
max(a,0).
q3:-shop(_,_,_,L),q31(L),fail.
q31([]).
q31([H1|T]):-H1=prod(H,P,_,_), max(A,B), P>B, retract(max(A,B)), assert(max(H,P)), q31(T).
q31([H1|T]):-H1=prod(_,P,_,_),max(_,B),P<=B,q31(T).
goal
% .
q1("Petrov").
%q2(table).
%q3;max(A,B).
15: . . , . , . , .
domains
list_colours = symbol*
list_products = product*
name_shop,address,chief,name_product,country = symbol
price =real
product = prod (name_product,price,country,list_colours)
facts
max(name_product,price)
%
dq1(address)
dq2(name_shop)
predicates
shop (name_shop,address,chief,list_products)
q1(chief)
q2(name_product)
q21(name_product,list_products)
q3
q31(list_products)
clauses
shop("Company1","Debenko_5","Ivanov",[prod(table,3000,"Italy",[white,
red,black]),prod(chair,4000,"Japan",[brown,grey])]).
shop("Company2","S.Lazo_4","Petrov",[prod(sofa,9000,"China",[brown,
black]),prod(chair,5000,"England",[red,grey])]).
shop("Company3","Sadovaya_3","Sidorov",[prod(sofa,19000,"Mexico",
[black,white])]).
shop("Company4","Dachnaya_2","Orlov",[prod(bookcase,7000,"Russia",
[brown,black]),prod(table,6000,"Spain",[red,grey])]).
shop("Company5","Pobeda_1","Galkin",[prod(bed,5000,"China",[brown,
black]),prod(arm_chair,21000,"Japan",[red,grey])]).
% , , , , "*".
q1(_):-dq1(A), write("*",A),nl.
% , .
q1(F):-not(dq1(_)), shop (_,A,F,_),write(A),nl,assert(dq1(A)).
q2(_):-dq2(A), write("*",A),nl,fail.
q2(P):-not(dq2(_)), shop(N,_,_,L),q21(P,L),write(N),nl,assert(dq2(N)),fail.
q21(H,[H1|_]):-H1=prod(H,_,_,_).
q21(H,[_|T]):-q21(H,T).
max(a,0).
q3:-shop(_,_,_,L),q31(L),fail.
q31([]).
q31([H1|T]):-H1=prod(H,P,_,_),max(A,B),P>B,retract(max(A,B)),assert(max(H,P)),q31(T).
q31([H1|T]):-H1=prod(_,P,_,_),max(_,B),P<=B,q31(T).
goal
% - , .
q1("Petrov"),q1("Petrov").
%q2(table);q2(table).
%q3;max(A,B).
16: . , , . , . , ; ; ; ; ; ; ; ; ; , , , , ; , , ; , , ; ; , , . , , ?
|
|
domains
% - , , , .
house=h(colour,nationality,pet,drink,cigarette)
houses=house*
colour,nationality,pet,drink,cigarette=symbol
predicates
colour(house, colour)
nationality(house, nationality)
pet(house, pet)
drink(house, drink)
cigarette(house, cigarette)
first(house,houses)
middle(house,houses)
solve
neighbourhood(house, house,houses)
neighbourhoodright(house, house,houses)
clauses
%
colour(h(C,_,_,_,_),C).
%
nationality(h(_,N,_,_,_),N).
%
pet(h(_,_,P,_,_),P).
%
drink (h(_,_,_,D,_),D).
%
cigarette(h(_,_,_,_,S),S).
% -
first(X,[X,_,_,_,_]).
%
middle(Y,[_,_,Y,_,_]).
%
neighbourhood(A,B,[A,B,_,_,_]).
neighbourhood(A,B,[B,A,_,_,_]).
neighbourhood(A,B,[_,A,B,_,_]).
neighbourhood(A,B,[_,B,A,_,_]).
neighbourhood(A,B,[_,_,A,B,_]).
neighbourhood(A,B,[_,_,B,A,_]).
neighbourhood(A,B,[_,_,_, A,B]).
neighbourhood(A,B,[_,_,_, B,A]).
% , B A
neighbourhoodright (A,B,[A,B,_,_,_]).
neighbourhoodright (A,B,[_,A,B,_,_]).
neighbourhoodright (A,B,[_,_,A,B,_]).
neighbourhoodright (A,B,[_,_,_, A,B]).
%
solve:- neighbourhood(H1,_,Houses), nationality(H1,englishman), colour(H1,red),
%;
neighbourhood(H2,_,Houses), nationality(H2, spaniard), pet(H2,dog),
%
neighbourhood(H3,_,Houses), colour(H3,green), drink(H3, coffee),
%
neighbourhood(H4,_,Houses), nationality(H4, ukrainian),
drink(H4, tea),
%
neighbourhoodright(H5,H6,Houses), colour(H6,green),
colour(H5, ivory),
%
neighbourhood(H7,_,Houses), cigarette(H7,winston), pet(H7, snail),
% ;
neighbourhood(H8,_,Houses), cigarette(H8,cool), colour(H8, yellow),
%
middle(H9,Houses), drink(H9, milk),
% ;
first(H10, Houses), nationality(H10, norwegian),
% , , , ,
neighbourhood(H11,H12,Houses), cigarette(H11,chesterfild),pet(H12,fox),
%; , ,
neighbourhood(H13,H14,Houses), cigarette(H13,cool),pet(H14,horse),
% , ,
neighbourhood(H15,_,Houses),cigarette(H15,lakestrike), drink(H15,orange),
%
neighbourhood(H16,_,Houses),nationality(H16,japanese), cigarette(H16,parlament),
%
neighbourhood(H17,H18,Houses),nationality(H17,norwegian), colour(H18,blue),
|
|
%
neighbourhood(H19,_,Houses), pet(H19,zebra),
%
neighbourhood(H20,_,Houses), drink(H20,water),
write(Houses).
goal
solve.