ЕЛЕМЕНТАРНІ ПРОГРАМИ НА ПРОЛОЗІ. ФАКТИ І ПРАВИЛА
Дан набір фактів, який має інформацію про багаж декількох пасажирів. Інформація про багаж кожного окремого пасажира – це № місця пасажира, кількість його речей і загальна вага його речей. Знайти багаж, в якому середня вага однієї речі певного пасажира, відрізняється не більше чим на 3 кг від загальної середньої ваги речей всіх пасажирів.
1: Include "bak-knish.Inc"
facts
single count(integer,real)
predicates
nondeterm bag(integer,integer,integer)
nondeterm Do()
goal
Do().
clauses
count(0,0).
bag(1,4,4).
bag(4,5,2).
bag(8,3,8).
Do():- bag(_,_,Ves),count(N,V),N1=N+1,V1=V+Ves,assert(count(N1,V1)),fail.
Do():- count(N,V),Ves=V/N,write(Ves),nl,bag(Num,Kol,Ves1),Sv=Ves1/Kol,abs(Ves-Sv)<3,write(Num),fail.
Do().
Дан файл с фактами, які мають відомості про пошукові сервери: назву сервера, адресу, мови. Написати програму, яка запитує у користувача параметри вибору серверів, и виводить на екран відомості про ці сервери.
include "lab1-2.inc"
Facts
server(string,string,string)
Predicates
nondeterm Do(string)
Goal
write("Input name of server "),readln(Name),Consult ("2.txt"),Do(Name),nl.
Clauses
Do(Name):-server(Name,Adress,Lang),write (Name," ",Adress," ",Lang).
Do(_).
3.Дан набір фактів, який має інформацію про багаж декількох пасажирів. Інформація про багаж кожного окремого пасажира – це № місця пасажира, кількість його речей і загальна вага його речей. З’ясувати, чи є пасажир, кількість речей в багажі якого, більше кількості речей багажу будь-якого з залишившись пасажирів. Знайти мінімальну вагу речі у тих пасажирів, у яких по одній речі. Дан файл с фактами, які мають відомості про пошукові сервери: назву серверу, адресу, мови. Написати програму, яка групує відомості про сервери за певною мовою і зберігає відомості у файлі.
include "epic.inc"
Facts
single count(integer)
single cost_all(integer)
%%%%%
Menu(string, string, string)
predicates
nondeterm Epic(integer)
nondeterm Toy(string, integer, integer, integer)
%%%%%
nondeterm get_menu()
clauses
count(0).
cost_all(0).
Toy("LineageII",9999,14,17).
Toy("WOW",38900,14,17).
Toy("tank",1000,3,14).
Epic(Bal):-toy(_,B,_,_),B>Bal, count(N),N1=N+1, assert(count(N1)),fail.
Epic(Bal):-toy(_,B,_,_),B>Bal, cost_all(B1), B2=B1+B, assert(cost_all(B2)), fail.
Epic(_):-toy(N,B,_,_),write(N, " - ", B),nl,fail.
Epic(_):-write("###"),nl,
count(N),write("All toys count => ", N),nl,cost_all(B),write("Total cost => ",B),nl,
M=B div N,write("Midel cost => ",M),nl.
%%%%%
Get_menu():-menu(A,"meet","tea"),/* C="tea", B="meet", */write (A, " ", "meet", " ", "tea"), nl, fail.
Get_menu():-write("----------------------------------------"),nl.
goal
epic(1),write("----------------------------------------"),nl,
Consult ("info.dat"), get_menu().
Дан набір фактів, який має інформацію про багаж декількох пасажирів. Інформація про багаж кожного окремого пасажира – це № місця пасажира, кількість його речей і загальна вага його речей. Визначити, чи є два пасажири, багажі яких співпадають за кількістю речей і відрізняються за вагою не більше чим на 5 кг від загальної максимальної ваги речей всіх пасажирів.
include "iceman1.inc"
global Facts
single passagir1(integer, integer, real)
single passagir2(integer, integer, real)
single ves(real)
predicates
nondeterm vyvod
nondeterm Passagir(integer, integer, real)
nondeterm Do
clauses
Passagir(52, 24, 0.12).
Passagir(83, 8, 0.3).
Passagir(17, 1, 0.20).
Passagir(17, 8, 1.0).
Passagir(180, 4, 0.5).
Passagir1(0, 0, 0).
Passagir2(0, 0, 0).
ves(0).
Do:- Passagir(_, _, Z), ves(Zr), Z1=Zr+Z, assert(ves(Z1)), fail.
Do:- ves(Zr), Passagir(X, Y, Z), passagir(X1,Y1,Z1), Y=Y1, X1><X, Zr-Z<5, assert(passagir1(X,Y,Z)),assert(passagir2(X1,Y1,Z1)), fail.
Do:- passagir1(X,Y,Z),passagir2(X1,Y1,Z1), write(X," ",Y," ",Z),nl, write(X1," ",Y1," ",Z1),nl.
vyvod:- ves(Z1), write("TOTAL WEIGHT: ",Z1),nl.
goal
Do, vyvod.
Дан файл с фактами, які мають відомості про пошукові сервери: назву серверу, адресу, мови. Написати програму, яка сортує відомості про сервери за іменем і зберігає їх у файлі.
include "lab1zad2.inc"
facts-zadacha2
server(string, string, string)
server1(string, string, string)
predicates
nondeterm sort
nondeterm min(string)
clauses
sort:-server(X, _, _), Min(X), sort.
sort.
min(X):- server(X1, _, _), X1 < X, min (X1).
min(X):-server(X, Y, Z),
assertz(server1(X, Y, Z),zadacha2), retract(server(X, Y, Z),zadacha2).
goal
Consult("in.txt", zadacha2), sort, save("out.txt", zadacha2).
Дан набір фактів, який має інформацію про багаж декількох пасажирів. Інформація про багаж кожного окремого пасажира – це № місця пасажира, кількість його речей і загальна вага його речей. З’ясувати, чи є пасажир, кількість речей в багажі якого, більше кількості речей багажу будь-якого з залишившись пасажирів. Знайти мінімальну вагу речі у тих пасажирів, у яких по одній речі. Дан файл с фактами, які мають відомості про пошукові сервери: назву серверу, адресу, мови. Написати програму, яка групує відомості про сервери за певною мовою і зберігає відомості у файлі.