Prolog. , : , () . "". - : S0, S1, S2, ... S. , "" . , , , , :
p(S0, S) :-
...
, , . J01 is 0! , : ! , J01 0.
, , , .
, , , , .
, : , , .
, , foo/1 ( !):
foo(M) :-
loop_entry_1(1,M, 0,_).
loop_entry_1(M0,M, I0,I) :-
I0 < 5, !,
loop_entry_0(M0,M1, 0,_, I0),
I1 is I0+1,
loop_entry_1(M1,M, I1,I).
loop_entry_1(M,M, I,I).
loop_entry_0(M0,M, J0,J, I) :-
J0 < 5, !,
M1 is I + J0 + M0,
J1 is J0 + 1,
loop_entry_0(M1,M, J1,J, I).
loop_entry_0(M,M, J,J, _).
B-but: , . :
foo(M) :-
loop_entry_1(1,M, 0).
loop_entry_1(M0,M, I0) :-
I0 < 5, !,
loop_entry_0(M0,M1, 0, I0),
I1 is I0+1,
loop_entry_1(M1,M, I1).
loop_entry_1(M,M, _).
loop_entry_0(M0,M, J0, I) :-
J0 < 5, !,
M1 is I + J0 + M0,
J1 is J0 + 1,
loop_entry_0(M1,M, J1, I).
loop_entry_0(M,M, _, _).
, : , ! , (M) !
: 1--1 , .