domains
world=owns(country, square, geography, population)
country = string
countries=country*
square = integer
geography = geo(materic, oceans, seas, mountains)
sea, ocean, mountain, continent, materic = string
oceans = ocean*
seas = sea*
mountains = mountain*
population = pop(quantity , languages, nations)
quantity, nquant, quant = integer
language = string
languages = language*
nations = nat(nnames,nquantities, npercent)%National part
nname = string
nquantities=nquantity*
npercent=percent*
percent, nquantity = integer
count, velichina=integer
list=integer*
lists=string*
Listint=integer*
nnames=string*
facts
max_Seas(country,byte)%Strana, kotoryi omivaet bolshe vsego morei
mount_Countries(country,mountain)%Strani, gde prohodit ykazannii goornii hrebet
predicates%Eto razdel s procedurami
owns(country, square, geography, population)
counter( seas,byte)
member(mountains,mountain)
max_seas_country(Country)%1-st question
mountain_countries(Mountain)%2-nd question
%national_count(Count)%3-th question
%gornie_hrebti(Country)%4-th question
%chislennost(Velichina)%5-th question
clauses
owns("Russia",1600,geo("Eurasia",["Atlantic","Pacific","Northern"],["Black","Barentsevo","Caspiy","Azov"],
["Caucasus","Altay","Ural","Camchat"]),pop(145,["Russian"],
nat(["Russian","Tatari","Ukrain","Caucasus","Mordovthi"],[130,5,1,8,1],[90,2,1,6,1]))).
owns("Poland",314,geo("Eurasia",[],["Baltic"],["Carpats","Sudets"]),pop(36,["Polish"],
nat(["Russian","Polish"],[1,35],[2,98]))).
owns("China",9597,geo("Eurasia",["Pacific"],["Yellow"],["Tibet","Himalayas","Carakums"]),
pop(1030,["Chinese"],nat(["Chinese","Corean"],[1020,10],[99,1]))).
owns("Egypt",1001,geo("Africa",[],["Red"],[]),pop(45,["Arab","English"],nat(["Arab","African"],[43,2],[98,2]))).
owns("Usa",9363,geo("America",["Atlantic","Pacific"],["Bering"],["Apalach","Rocky"]),
pop(232,["English","Spanish"],nat(["American","Spanish"],[222,10],[96,4]))).
owns("Argentina",2767,geo("America",["Atlantic","Pacific"],[],["Apalach"]),pop(28,["Spanish"],
nat(["Argentin"],[23],[82]))).
owns("Australia",7686,geo("Australia",["Pacific"],["Tasman","Coral"],["Flinder","Tibet","Mcdonnel"]),
pop(14,["English"],nat(["Australian","Newzealander"],[13,1],[97,3]))).
owns("New Zeland",268,geo("Australia",["Pacific"],["Tasman"],["Coock"]),
pop(3,["English"],nat(["Newzelands"],[3],[100]))).
/*The first question*/
counter([],0).%Pystoi spisok (seas,byte)
counter([H|T],N):-counter(T,M),N=M+1.
max_Seas("A",0).
max_seas_country(Country):- owns(Country,_,geo(_,_,L,_),_),counter(L,N),
max_Seas(Country1,N1), N>N1,retract( max_Seas(Country1,N1)),
assertz(max_Seas(Country,N)),write(Country," ",N),nl.
/*Second question*/
member([H|_],H).
member([_|T],X):-member(T,X).
% mount_Countries("B","Tibet").%Strana i gornaya vershina
mountain_countries(Mountain):-owns(Country,_,geo(_,_,_,L),_),member(L,Mountain),write(Country),nl,fail.
goal
%max_seas_country(C),max_Seas(C,N).
not(mountain_countries("Tibet")).
Поиск информации в базе данных (Visual Prolog)
Предметная область – страны мира. Каждая страна может быть описана структурой: название, площадь, географическое положение, население.
Географическое положение может быть описана структурой: часть света, материк, океаны, моря, горные хребты.
Население может быть описано структурой: численность, государственный язык, национальный состав.
Национальный состав может быть описан структурой: национальность, численность, процент от всего населения.
Реализовать следующие типы запросов:
1. Найти страну, которую омывает больше всего морей;
2. Найти все страны, на территории которых находится указанный горный хребет;
3. Найти все страны, у которых число национальностей превышает заданную величину;
4. Найти все горные хребты, находящиеся на территории указанной страны;
5. Найти все страны, у которых численность населения меньше заданной величины
1 и 2 пункты я сделал, а вот остальные никак не могу
Код: