4.1.
a)
6) в)
?- |
r)
?- family! pers on (_, Name, _, _), _, [])?- child! person! Name, SecondName,
works(_»_))).
?-
family { person {_, Name, _, unemployed), person(_,_,_,works L,J), _) -
family (Husband, Wife, Children), dateafbirthi Husband, date(_,_, Yearl)), dateofbirthf Wife, date(_,_,Year2)), (Yearl - Year2 >- IS
4.2.
Yeai:2 |
Yearl >= 15
),
member! Child, Children).
twinst Childl, Child2):-family! _, _r Children), del! Childl, Children, OtherChildren), «Удалить
* объект Childl member! Child2, OtherChildren), dateofbirthl Childl, Date), dateofbirthf Chiid2, Date).
4.3.
nth_member(1,!X I LI, X).
nth_raember(K, [Y I L], X)
N1 is N - 1, ntb_member[ N1, L X).
i X - первый элемент % списка!Х I L]: - % X - n-й элемент i списка is [V I L)
4.4
4.5.
Входная строка сокращается после прохоадения каждого цикла, отличного от скрытого, а поскольку она имеет конечную длину, то не может сокращаться бесконечно долго.
[ ], _):-
accepts (State,
: - |
[X I Rest], MaxMoves) |
final{ State) accepts,- State,
MaxMoves > 0,
trans(State, X, State 1],
NewMax is MaxMoves - 1,
accepts] Statel, Rest, NewMax). Accepts,- State, String, MaxMoves}:
MaxMoves > 0,
silent! State, Statel),
HewMax is KaxMoves - 1,
accepts[ Statel, String, NewMan).
в |
орадок определен |
цели |
jump! X/Y, XI/YD |
(dxy(Dx, Dy) |
t |
4.6. Такой 4.7.
г a)
member |
(Y, |
* |
: - |
[1,2,3,4,5,5,7,8]).
конь переходит из клетки
% X/Y Б клетку Xl/Yl Расстояния между позициями коня
Решения к отдельным упражнением
Ч в направлениях х и у
б)
В)
cbty(Dy, Dx) % или в направлениях у и х),
XI is X + Dx, inboard! XI), Yl is Y + Dy, ir.boarcM Yl). dxy (dxy ( |
% XI находится в пределах шахматной доски
пределах шахматной доски 1 вперед |
в пределах |
i Yl находится в 2, 1). § 2 клетки вправо, 2, -1), % 2 клетки вправо, 1 назад dxy(-2, 1), % 2 клетки влево, 1 вперед dxy(-2, - 1). % 2 клетки влево, 1 назад inboard(Coord):- % Координаты находятся
% шахматной доски О < Coord, Coord < 9.
knightpatht [Square]). t Конь стоит на клетке Square knightpath([S1,S2 ] Rest)):-
jump(SI, S2),
knigbtpath; [S2 I Rest]).
?- knightpathf [2/1,R, 5/4,S,X/B]).
Глава 5
5.1,
a) | x = i,- |
X = 2; | |
6) | X = 1 |
Y = 1; | |
X.= 1 | |
Y = 2; | |
X = 2 | |
4 = 1; | |
X = 2 | |
Y = 2; | |
B) | X = 1 |
Y = 1; | |
X = 1 | |
• Y = 2 |
5.2.
53.
5.4. 5.5,
Предполагается, что вызов процедуры class происходит с неконкретизированным вторым параметром.
class [ Number, positive):-
Number > 0,!. class(0, zero):-!. class [ number, negative).
split! [], [],[]>• split! [X I L], [X I LI], L2):-
X > = 0, I,
split(L, LI, L2). split) [X I L), LI, [X i L2J);-
split! L, LI, L2].
member (Item, Candidates], not member! Item, RuledOut)
set_difference! [], _, []). set_difference{ [X I LI], L2, L):-
member! X, 12),!,
set_difference(LI, L2, L), set_difference{ [X I LI], L2, [X I L]):-
set_difference(LI, L2, L)..
Решения к отдельным упражнениям
5.6. unifiable( [], _, []}.
unifiablet [First I Rest], Term, List):-
not! First = Term),!,
unitiable(Rest, Term, List). unifiablel [First I Rest!, Term, [First I List])
unifiablet Rest, Term, List).
-