().
().
().
, X , X , . , :? _(, ).
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = ;
X = , Y = .
() , . (), . , , , , . ֳ , , . , , , . .
ֳ _(N) , N . N , _(N) , , N .
/*1*/ _(0).
/*2*/ _(X):_(), is +1.
? _(X).
(0, 1, 2, 3,...), . , (, ';'), _ , .
1 2. 1, , X=0. 2 , . 1, X=1; 2 , '. . 1. ҳ . , , , 1, 2. ' . 1 .
22. ³.
³ , . , :
|
|
, , , .
' , ' '.
, , , .
'!', . . , . , , .
.
' , -, . : , , .
, -, , . ' fail, : , .
, . : , ົ.
23. ϳ .
, , , . , , - .
(1,1):-!.
(N, ):- N1 is N-1, (N1, ), is +N.
. , , 1. 1. . , . , , . , . , - ( , 1) .
24. -fail.
fail , , fail , . ij, fail , . fail , 䳿 . -fail.
|
|
__, __(X) , X .
. , , ' . , , . :
__():- (), fail
__():-...
( ) : X , __(X) . , , X . , :
? __().
, . , fail . __ , , . ֳ , , .
, fail. __, , :
__():- (),!, fail.
__(X):- (X, Y), (Y, ), > 3000,!, fail. __ ():- (X, ), 2000 < , 20000 > .
(, Y):- _(, ), < 5000,!, fail.
(, Y):- (, Z), __(, W), Y is Z+W. __(, Y):-...
, - -fail not. , .
__():- not(()), not(((X, Y), (Y, ), >3000)), (, 1),...
25. .
, . . - , - , .
(N1, N2, ):- _(),
_1 is *N2,
_2 is (+1)*N2,
_1 =< N1, _2>N1,!.
_ , N1 N2. , , 27 6 4, 4x6 27, 5x6 27.
_ , . N1 N2, (N1,N2,) . _ , . , . : , , , . , - , , _ . , . , - - _. .
|
|
26. , ' .
, ' , , , . , , , .
_, , . :
_(, 0):-!.
_(, 0):-!.
_(,2).
, , , . , ,
? _(,2).
True
, , . , :
_(, N):-!, N=0.
_(, N):-!, N=0.
_(, 2).
, ,
? _(,Y).
, . , :
, , .
27. .
, , write. X , write(X) . X , ', (, '_253'). write, . write . .
nl . nl new line. ( ). write, nl . tab . ֳ tab(X) X . , X .
(pretty print ) , (,Y) , X.
, [ 1,2,3] :
[1,2,[3,4],5,6]
, , .
pp([H|T],I):-!, F is I+3, pp(H,F), ppx(T,F),nl.
|
|
pp(X,I):- tab(I), write(X),nl.
ppx([],_).
ppx([H|T],I):- pp(H,I), ppx(T,I).
, . ֳ