34 lines
649 B
Prolog
34 lines
649 B
Prolog
make_table(S,E) :-
|
|
print_header(S,E),
|
|
make_table_rows(S,E),
|
|
fail.
|
|
make_table(_,_).
|
|
|
|
print_header(S,E) :-
|
|
nl,
|
|
write(' '),
|
|
forall(between(S,E,X), print_num(X)),
|
|
nl,
|
|
Sp is E * 4 + 2,
|
|
write(' '),
|
|
forall(between(1,Sp,_), write('-')).
|
|
|
|
make_table_rows(S,E) :-
|
|
between(S,E,N),
|
|
nl,
|
|
print_num(N), write(': '),
|
|
between(S,E,N2),
|
|
X is N * N2,
|
|
print_row_item(N,N2,X).
|
|
|
|
print_row_item(N, N2, _) :-
|
|
N2 < N,
|
|
write(' ').
|
|
print_row_item(N, N2, X) :-
|
|
N2 >= N,
|
|
print_num(X).
|
|
|
|
print_num(X) :- X < 10, format(' ~p', X).
|
|
print_num(X) :- between(10,99,X), format(' ~p', X).
|
|
print_num(X) :- X > 99, format(' ~p', X).
|