所以我才刚刚起步,然后开始闲逛。
假设我有一个这样的数字列表:
X = [0,1,0,1,1,1,1,0]
,并希望将这些数字打印到屏幕上,而无需这样的逗号,空格或换行符:
?- write(X).
01011110
到目前为止,我已经尝试使用write(X)。只是打印数组,我使用pprint模块愚弄了print_term,但是没有成功。
现在我有一种方法可以这样创建0和1的网格:
grid(0,[]).
grid(X,Y) :-
X > 0,
X1 is X-1,
random(0, 2, U),
Y = [U|T],
grid(X1,T).
以上方法按预期工作,只是没有获得我想要的打印输出。如果它改变了一切,我确实打算最终将其变成2d网格。
答案 0 :(得分:3)
假设输入中的所有元素确实都是数字(或原子),则可以使用内置谓词atomic_list_concat/2:
?- X = [0,1,0,1,1,1,1,0], atomic_list_concat(X,Y), write(Y).
01011110
如果它是表示为列表列表的矩阵,则可以执行以下操作:
print_matrix([]).
print_matrix([Row|Rows]):-
atomic_list_concat(Row, TRow),
writeln(TRow),
print_matrix(Rows).
样本测试:
?- print_matrix([[1,0,0,1], [0,1,1,0]]).
1001
0110