在单独的行中打印矩阵

时间:2012-10-31 22:10:01

标签: prolog

我想打印矩阵,每行都在一个单独的行中,例如

?- print_matrix([[a,b,c],[d,e,f]]).

我想得到

[a,b,c]
[d,e,f]

2 个答案:

答案 0 :(得分:2)

?- maplist(\X^(writeq(X),nl),[[a,b,c],[d,e,f]]).
[a,b,c]
[d,e,f]
true.

使用library(lambda)。或者:

writeqln(X) :-
   writeq(X),
   nl.

?- maplist(writeqln,[[a,b,c],[d,e,f]]).

答案 1 :(得分:1)

最简单的方法是在递归规则中使用writenl,如下所示:

print_matrix([]).
print_matrix([H|T]) :- write(H), nl, print_matrix(T).

这是用于列表处理的“经典”Prolog解决方案,具有处理空列表的事实,以及逐个处理标题元素的规则。