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).
-