Материал: Отчёт ЛР №5

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

minNumber(L, N) :-

minElements(L, MinElements),

min(MinElements, _, N).

minElements([], []).

minElements([H|T], [MH|MT]) :-

min(H, MH, _),

minElements(T, MT).

min([X], X, 1).

min([H|T], M, N) :- min(T, M, N), H < M, !.

min([_|T], M, N) :- min(T, M, N1), N = N1+1.

goal

List = [[1,3],[0],[6,1]],

minNumber(List, N).

ПРИЛОЖЕНИЕ Б. Листинг кода в файле «laba6.txt»

- Создание БД.

domains

name = symbol

sex = symbol % male | female

age = integer

database

person(name, sex, age)

parent(name, name)

clauses

person("Name1", male, 32).

person("Name2", male, 50).

person("Name3", male, 7).

person("Name4", male, 5).

person("Name5", male, 45).

person("Name8", male, 17).

person("Name6", female, 70).

person("Name7", female, 65).

person("Name9", female, 29).

person("Name10", female, 44).

person("Name11", female, 65).

parent("Name1", "Name3").

parent("Name1", "Name4").

parent("Name9", "Name3").

parent("Name9", "Name4").

parent("Name2", "Name1").

parent("Name6", "Name2").

parent("Name6", "Name5").

parent("Name5", "Name8").

parent("Name7", "Name8").

parent("Name11", "Name7").

parent("Name11", "Name10").

goal

save("person.db").

- Работа с БД.

domains

name = symbol

gender = symbol % male | female

age = integer

database

person(name, gender, age)

parent(name, name)

predicates

nondeterm dad(name, name)

nondeterm mom(name, name)

nondeterm son(name, name)

nondeterm daughter(name, name)

nondeterm brother(name, name)

nondeterm sister(name, name)

nondeterm grandpa(name, name)

nondeterm grandma(name, name)

nondeterm menu

nondeterm end

nondeterm action(char)

constants

file = "person.db"

clauses

dad(X, Y) :- consult(file), parent(X, Y), person(X, male, _).

mom(X, Y) :- consult(file), parent(X, Y), person(X, female, _).

son(X, Y) :- consult(file), parent(Y, X), person(X, male, _).

daughter(X, Y) :- consult(file), parent(Y, X), person(X, female, _).

brother(X, Y) :- consult(file),

parent(Z, X), parent(Z, Y), not(X=Y), person(X, male, _).

sister(X, Y) :- consult(file),

parent(Z, X), parent(Z, Y), not(X=Y), person(X, female, _).

grandpa(X, Y) :- consult(file), parent(X, Z), parent(Z, Y), person(X, male, _).

grandma(X, Y) :- consult(file), parent(X, Z), parent(Z, Y), person(X, female, _).

menu :-

write("1 - Add person"), nl,

write("2 - Add parent relation"), nl,

write("3 - Delete person"), nl,

write("4 - Delete parent relation"), nl,

write("0 - Save information & Exit"), nl,

readchar(Char),

retractall(_),

consult(file),

action(Char).

end :-

save(file),

write("Change saved. Press any key to continue"), nl,

readchar(_),

menu.

action('1') :-

write("*Add person's information*"), nl,

write("Enter name:"), nl,

readln(N),

write("Enter gender:"), nl,

readln(G),

write("Enter age:"), nl,

readint(A),

assert(person(N, G, A)),

end.

action('2') :-

write("*Add parent's information*"), nl,

write("Enter parent's name:"), nl,

readln(N1),

write("Enter child's name:"), nl,

readln(N2),

assert(parent(N1, N2)),

end.

action('3') :-

write("*Delete persons's information*"), nl,

write("Enter name:"), nl,

readln(N),

retract(person(N, _, _)),

end.

action('4') :-

write("*Delete parent's information*"), nl,

write("Enter parent's name:"), nl,

readln(N1),

write("Enter child's name:"), nl,

readln(N2),

retract(parent(N1, N2)),

end.

action('0') :- save(file).

goal

menu.

Источник: https://studfile.net/preview/16448802/