Скачиваний:
12
Добавлен:
01.05.2014
Размер:
69.12 Кб
Скачать

  • Программа о древе славного рода : Само древо :

woman('Феня').

woman('Зина').

woman('Люда').

woman('Ира').

woman('Нина').

woman('Аня').

woman('Таня').

woman('Юля').

woman('Маня').

woman('Марина').

man('Игнат').

man('Вася').

man('Миша').

man('Петр').

man('Коля').

man('Володя').

man('Павел').

man('Саша').

man('Леха').

mother('Зина','Коля').

father('Вася','Коля').

mother('Зина','Петр').

father('Вася','Петр').

mother('Зина','Люда').

father('Вася','Люда').

mother('Феня','Миша').

father('Игнат','Миша').

mother('Феня','Маня').

father('Игнат','Маня').

mother('Маня','Павел').

father('Володя','Павел').

mother('Маня','Юля').

father('Володя','Юля').

mother('Маня','Таня').

father('Володя','Таня').

mother('Люда','Саша').

father('Миша','Саша').

mother('Люда','Аня').

father('Миша','Аня').

mother('Ира','Марина').

father('Петр','Марина').

mother('Нина','Леха').

father('Коля','Леха').

husband('Игнат','Феня').

husband('Володя','Маня').

husband('Миша','Люда').

husband('Вася','Зина').

husband('Петр','Ира').

husband('Коля','Нина').

wife(Whose,Who):-husband(Who,Whose).

parents(Who,Whose):-mother(Who,Whose).

parents(Who,Whose):-father(Who,Whose).

child(Who,Whose):-parents(Whose,Who).

brother(Who,Whose):-man(Who),father(Rod,Who),

father(Rod,Whose),Who\=Whose.

sister(Who,Whose):-woman(Who),mother(Rod,Who),

mother(Rod,Whose),Who\=Whose.

uncle(Who,Whose):-parents(Par,Whose),brother(Who,Par).

uncle(Who,Whose):-parents(Par,Whose),sister(N,Par),husband(Who,N).

aunt(Who,Whose):-parents(Par,Whose),sister(Who,Par).

aunt(Who,Whose):-parents(Par,Whose),brother(P1,Par),wife(Who,P1).

grandmother(Who,Whose):-woman(Who),parents(Par,Whose),

mother(Who,Par).

grandfather(Who,Whose):-man(Who),parents(Par,Whose),

father(Who,Par).

cousina(Who,Whose):-woman(Who),aunt(Who1,Whose),

mother(Who1,Who),Who\=Whose.

cousin(Who,Whose):-man(Who),uncle(Who1,Whose),

father(Who1,Who),Who\=Whose.

plem_a(Who,Whose):-woman(Who),

parents(Par,Who),

sister(Par,Whose).

plem_a(Who,Whose):-woman(Who),

parents(Par,Who),

brother(Br,Par),

wife(Whose,Br).

plem_a(Who,Whose):-woman(Who),

parents(Par,Who),

sister(Ss,Par),

husband(Whose,Ss).

plem_a(Who,Whose):-woman(Who),

parents(Par,Who),

brother(Par,Whose).

plem_k(Who,Whose):-man(Who),

parents(Par,Who),

sister(Par,Whose).

plem_k(Who,Whose):-man(Who),

parents(Par,Who),

brother(Br,Par),

wife(Whose,Br).

plem_k(Who,Whose):-man(Who),

parents(Par,Who),

sister(Ss,Par),

husband(Whose,Ss).

plem_k(Who,Whose):-man(Who),

parents(Par,Who),

brother(Par,Whose).

Тестовые примерчики :

?- sister('Таня',W).

W = 'Павел' ->;

W = 'Юля' ->;

no

?- grandmother(X,'Саша').

X = 'Феня' ->;

X = 'Зина' ->;

no

?- grandfather('Вася',X).

X = 'Саша' ->;

X = 'Аня' ->;

X = 'Марина' ->;

X = 'Леха' ->;

no

?- cousina(X,'Саша').

X = 'Таня' ->;

X = 'Юля' ->;

X = 'Марина' ->;

no

?- plem_a('Марина',X).

X = 'Нина' ->;

X = 'Миша' ->;

X = 'Коля' ->;

X = 'Люда' ->;

no

  • Программа о дорогах : Сами дороги :

way('Vyborg','Peterburg',160).

way('Peterburg','Moscow',600).

way('Peterburg','Novgorod',170).

way('Novgorod','Moscow',490).

way('Peterburg','Novosibirsk',2560).

way('Peterburg','Kiev',1060).

way('Kiev','Omsk',2600).

way('Moscow','Omsk',1900).

way('Novosibirsk','Omsk',350).

way('Omsk','Krasnoyrsk',900).

way('Krasnoyrsk','Vladivostok',3700).

way1(X,Y,Dist):-way(X,Y,Dist).

way1(X,Y,Dist):-way(Y,X,Dist).

element(Z,[Z|_]).

element(Z,[_|X]):-element(Z,X).

print([]):-!.

print([X|Tail]):-

print(Tail),

write(X),

write('-').

path(Town1,Town2,Dist,Were):-

way1(Town1,Town2,Dist),

not(element(Town2,Were)),

print(Were),

write(Town2).

path(Town1,Town2,Dist,Were):-

way1(Town1,X,Dist1),

not(element(X,Were)),

path(X,Town2,Dist2,[X|Were]),

Dist is Dist1+Dist2.

go(Town1,Town2,Dist):-

path(Town1,Town2,Dist,[Town1]).

min(Town1,Town2,Dist1):-

path(Town1,Town2,Dist,[Town1]),

Dist<Dist1.

gomin(Town1,Town2,Dist1,M):-

path(Town1,Town2,Dist,Were),

Dist < Dist1,

Dist11 is Dist1,

path(Town1,Town2,Dist11,M).

gomin(Town1,Town2,Dist1,M):-

not(min(Town1,Town2,Dist1)),

M is Dist1.

road(Town1,Town2):-

gomin(Town1,Town2,100000,M).

Тестовые примерчики :

?- go('Vyborg','Vladivostok',D).

Vyborg-Peterburg-Moscow-Omsk-Krasnoyrsk-Vladivostok

D = 7260 ->;

Vyborg-Peterburg-Novgorod-Moscow-Omsk-Krasnoyrsk-Vladivostok

D = 7320 ->;

Vyborg-Peterburg-Novosibirsk-Omsk-Krasnoyrsk-Vladivostok

D = 7670 ->;

Vyborg-Peterburg-Kiev-Omsk-Krasnoyrsk-Vladivostok

D = 8420 ->;

no

?- road('Vyborg','Vladivostok').

Vyborg-Peterburg-Moscow-Omsk-Krasnoyrsk-Vladivostok

?- road('Vyborg','Vladivostok').

Vyborg-Peterburg-Moscow-Omsk-Krasnoyrsk-Vladivostok

no

?- go('Peterburg','Moscow',Dist).

Peterburg-Moscow

Dist = 600 ->;

Peterburg-Novgorod-Moscow

Dist = 660 ->;

Peterburg-Novosibirsk-Omsk-Moscow

Dist = 4810 ->;

Peterburg-Kiev-Omsk-Moscow

Dist = 5560 ->;

no

  • Программа о действиях над списком :

element(Z,[Z|_]).

element(Z,[_|X]):-element(Z,X).

add(Z,X,[Z|X]).

addlast(Z,[],[Z]).

addlast(Z,[A|X],[A|R]):-addlast(Z,X,R).

reverse([],[]).

reverse([A|X],R):-reverse(X,Y),addlast(A,Y,R).

cmp([],[]).

cmp([A|X],[B|Y]):-A=B,cmp(X,Y).

prefix([],X).

prefix([A|X],[B|Y]):-A=B,prefix(X,Y).

near(A,B,X):-prefix([A,B],X).

near(A,B,X):-prefix([B,A],X).

near(A,B,[_|X]):-near(A,B,X).

del_elem(A,[A|X],X).

del_elem(A,[B|X],[B|R]):-del_elem(A,X,R).

del_all_elem(A,[X|R],Y):-

del_all_elem(A,R,Y).

del_all_elem(A,[X|R],[X|Y]):-

X\=A,

del_all_elem(A,R,Y).

del_all_elem(A,[],[]).

Тестовые примерчики :

?- add(a,[b,c,d],S). Добавление нового элемента в начало

S = [a,b,c,d] ->;

no

?- addlast(ss,[b,c,d],S). Добавление нового элемента в конец

S = [b,c,d,ss] ->;

no

?- reverse([a,b,c,d],SR). Список – наоборот

SR = [d,c,b,a] ->;

no

?- cmp([a,b,c],[a,b,c]). Сравнение двух списков

yes

?- cmp([a,b,c],[a,b,c,d]).

no

?- near(c,d,[a,b,c,d,f]). Два элемента рядом

yes

?- del_all_elem(a,[b,a,c,a],S). Удаление всех вхождений элемента из списка

S = [] ->;

S = [c] ->;

S = [b] ->;

S = [b,c] ->;

no

Соседние файлы в папке ARI_DOC