% Kétjegyű számok:

elso_jegy(1).
elso_jegy(2).
elso_jegy(3).
elso_jegy(4).
elso_jegy(5).
elso_jegy(6).
elso_jegy(7).
elso_jegy(8).
elso_jegy(9).

masodik_jegy(0).
masodik_jegy(1).
masodik_jegy(2).
masodik_jegy(3).
masodik_jegy(4).
masodik_jegy(5).
masodik_jegy(6).
masodik_jegy(7).
masodik_jegy(8).
masodik_jegy(9).

ketjegyu(X):- elso_jegy(A), masodik_jegy(B), X is 10*A+B.

%--------------------------------------------------------------------------------------------

% Ugyanez másként:

between(N,M,N):- N =< M.
between(N,M,I):- N < M, N1 is N+1, between(N1,M,I).


% A between és az "I>=N, I=<M" közti különbség: az előbbi felhasználható az őt kielégítő
% változóértékek legenerálására, illetve ciklus szimulálására.


elso_j(A):- between(1,9,A).
masodik_j(A):- between(0,9,A).
ket_j(X):- elso_j(A), masodik_j(B), X is 10*A+B.


ketjegyuek:- ket_j(X), write(X), nl, fail.
ketjegyuek.

% A fail a mindig hamis logikai konstans; az nl egy soremelés nyomtatása a képernyőre.


%--------------------------------------------------------------------------------------------

% Ugyanez megint maskent:

ketjegyuek2:- between(10,99,X), write(X), nl, fail.
ketjegyuek2.