Include "zadacha_1.Inc"
facts
single count(integer,real)
single sr(real)
predicates
nondeterm Package(integer,integer,real)
nondeterm Do()
clauses
count(0,0.0).
sr(0.0).
Package(2,6,11.5).
Package(3,1,15.5).
Package(4,3
,5.5).
Package(5,1,20.0).
Do():- Package(_,_,V),count(N,W),N1=N+1,W1=W+V,assert(count(N1,W1)),fail.
Do():- count(N,W),M=W/N, assert(sr(M)),write(M), nl,fail.
Do():-Package(Nom,K,V),K=1,sr(M),V>M,nl,write(Nom," ",K," ",V),fail.
Do.
goal
Do(),nl,write(" THe end of facts").
Дан файл с фактами, які мають відомості про пошукові сервери: назву серверу, адресу, мови. Написати програму, яка поповнює відомості про сервери в файлі. Передбачити увід відомостей про декілька серверів за один сеанс роботи програми.
Include "laba2.Inc"
facts
Server(string,string,string)
predicates
nondeterm Doa
nondeterm Dor
nondeterm Do
goal
Consult("servers.dat"),Doa,Do,Save("servers.dat").
clauses
Doa:-nl,write("Введите название сервера, адресс и язык "),
readln(Naz),readln(Adr),readln(Mov),assertz(server(Naz,Adr,Mov)),fail.
Doa:-Dor.
Dor:-write("Добавить еще сервер(Y/N)? "),readchar(Ans),Ans='Y',Doa,fail.
Dor.
Do:-server(N,A,M),write(N," ",A," ",M),nl,fail.
Do.
Дан набір фактів з відомостями про речовини. Для кожної речовини вказано: назву речовини, її питому вагу і провідність (провідник, напівпровідник, ізолятор). Визначити чи є речовини з однаковими питомими вагами в різних групах. Визначити кількість таких речовин.
Facts
single count(integer)
Predicates
nondeterm Rech(string, real, string)
Do
Goal
Do.
Clauses
count(0).
Rech("Цианид",3.6, "Изолятор").
Rech("Алюминий",4.6,"Проводник").
Rech("Кремний",3.6,"Полупроводник").
Rech("Вода",1.0,"Проводник").
Rech("Пластмасса",4.6, "Изолятор").
Do:-Rech(_,Weight1,Type1),Rech(_,Weight2,Type2),Type1<>Type2,Weight1=Weight2,count(N),N1=N+1,assert(count(N1)),fail.
Do:-count(N1),write("Количество одинаковых весов - ",N1),nl.
Дан набір фактів, які мають відомості про іграшки: назву іграшки, її варту в копійках і вік дітей, для яких вона призначена. (Наприклад: для дітей від 2 до 5 років). Треба одержати максимальну і мінімальну ціни для певного виду іграшки.
Facts
single count(Real)
Predicates
Игрушка(String, Real, Integer, Integer)
Do
Goal
Do.
Clauses
count(0).
Игрушка("Слоник",4.5,2,5).
Игрушка("Слоник",5.0,2,5).
Игрушка("Слоник",4.3,2,5).
Игрушка("Лев",5.7,2,5).
Игрушка("Лев",8.3,2,5).
Игрушка("Лев",11.3,2,5).
Игрушка("Лев",9.3,2,5).
Do:-Игрушка("Лев",B,_,_),count(N1),B>N1,N2=B, assert(count(N2)),fail.
Do:-count(N),write(N).
Дан набір фактів, які мають відомості про іграшки: назву іграшки, її вартість в копійках і вік дітей, для яких вона призначена. (Наприклад: для дітей від 2 до 5 років). Треба одержати ціни всіх ляльок, які відрізняються від середньої ціни ляльки, не більш, чим на 1гривну 20 коп.
facts
single count(integer)
single sumpr(integer)
predicates
Toy(string,integer,integer,integer)
Price
goal
Price.
clauses
count(0).
sumpr(0).
Toy("Кукла",225,1,3).
Toy("Некукла",300,3,5).
Toy("Машинка",270,3,6).
Toy("Винярат-ходячий",350,10,15).
Toy("Кукла",400,5,10).
Toy("Кукла ",200,1,3).
Toy("Кукла ",210,1,3).
Price:-toy(M,Pr,_,_), count(N), sumpr(A), M=" Кукла ", N1=N+1, A1=A+Pr, assert(count(N1)), assert(sumpr(A1)), fail.
Price:-toy(M,Pr,_,_), count(N), sumpr(A), M=" Кукла ", abs(Pr-A/N)<120, write(M," ",Pr), nl, fail.
Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран прізвище студента, середній бал якого 4.0.
Predicates
Stud(string, real)
Do
Goal
Do.
Clauses
Stud(“Петренко”,4.5).
Stud(“Антонов”,4.0).
Stud(“Балаян”,4.3).
Do:- stud(Pr, 4.0), write(Pr).
Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран всі прізвища студентів, середній бал яких більше 4.0.
Predicates
Stud(string, real)
Do(real)
Goal
Do(4.0).
Clauses
Stud("Петренко",4.5).
Stud("Антонов",4.0).
Stud("Балаян",4.3).
Do(Bal):- stud(Pr, B), B>Bal,write(Pr),nl,fail.
Do(_).
Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран кількість студентів, середній бал яких більше 4.0.
Facts
single count(integer)
Predicates
Stud(string, real)
Do(real)
Goal
Do(4.0).
Clauses
count(0).
Stud("Іванов",4.5).
Stud("Василенко",4.0).
Stud("Коваленко",4.3).
Do(Bal):-stud(_,B),B>Bal,count(N),N1=N+1, assert(count(N1)), fail.
Do(_):-count(N),write(N).
Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран всі прізвища студентів, середній бал яких більше 4.0 або менше3.5.
Predicates
Stud(string, real)
Do(real,real)
Goal
Do(4.0, 3.5).
Clauses
Stud(“Петренко”,4.5).
Stud(“Антонов”,4.0).
Stud(“Балаян”,3.2).
Do(Bal1,Bal2):-stud(Pr,B), B>Bal1,write(Pr),nl,fail;
stud(Pr, B), B<Bal2,write(Pr),nl,fail.
Do(_,_).
.Відсортувати факти по кількості речей у пасажирів (у порядку зростання)
Facts-nosort
mesto(integer, integer)
Facts-sort
mesto1(integer, integer)
Predicates
sort
min(integer)
Goal
consult ("F.dat", nosort), sort, save("F.dat", sort).
Clauses
sort:- mesto(_, Kol), min(Kol), sort.
sort.
min(Kol):- mesto(_,Kol1), Kol1 < Kol, min (Kol1).
min(Kol):-mesto(N, Kol),
assertz(mesto1(N, Kol), sort), retract(mesto(N, Kol), nosort).
Файл F.dat містить факти:
mesto(1,5)
mesto(2,1)
mesto(3,4)
mesto(4,6)