我是prolog新手,我想打印一个初始值和一个目标事实如下面
initial([8,1,3,7,0,2,6,5,4]).
goal([1,2,3,8,0,4,7,6,5]).
=============
= 8 = 1 = 3 =
=============
= 7 = 0 = 2 =
=============
= 6 = 5 = 4 =
=============
你能帮我做一下吗?
硬编码方式:
pretty_print([A, B, C, D, E, F, G, H, I]) :-
write(=============), nl, nl,
write('= '), write(A), write(' = '), write(B), write(' = '), write(C), write(' ='), nl, nl,
write(=============), nl, nl,
write('= '), write(D), write(' = '), write(E), write(' = '), write(F), write(' ='), nl, nl,
write(=============), nl, nl,
write('= '), write(G), write(' = '), write(H), write(' = '), write(I), write(' ='), nl, nl,
write(=============), nl, nl.
with format:
pretty_print(L) :-
format('=============~n
= ~w = ~w = ~w =~n
=============~n
= ~w = ~w = ~w =~n
=============~n
= ~w = ~w = ~w =~n
=============', L).
与一些功能帮助:
length_(A, B) :- length(B, A).
pretty_print(L) :-
length(Rows, 3),
maplist(length_(3), Rows),
append(Rows, L),
maplist(format('=============~n~n= ~w = ~w = ~w =~n~n'), Rows),
write(=============), nl.
与lambda模块:
pretty_print(L) :-
length(Rows, 3),
maplist(X^length(X, 3), Rows),
append(Rows, L),
maplist(format('=============~n~n= ~w = ~w = ~w =~n~n'), Rows),
write(=============), nl.
用法:
?- initial(X), pretty_print(X).
或
?- goal(X), pretty_print(X).