2011-12-17 5 views
-1

ように私は、プロローグで新しいですし、プロローグプリントは事実目標や初期

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 = 

============= 

の下にあなたは私がそれを行う助けてもらえますように私は、最初のゴールの事実 を印刷したいですか?

答えて

1

シンプルなハードコードさ方法:フォーマットと

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. 

:いくつかの助けを借りてfunctionnal

pretty_print(L) :- 
    format('=============~n 
= ~w = ~w = ~w =~n 
=============~n 
= ~w = ~w = ~w =~n 
=============~n 
= ~w = ~w = ~w =~n 
=============', L). 

lambdaモジュールと

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. 

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). 
関連する問題