用PROLOG打印数组/列表的最佳方式是不带逗号、方括号或空格? [英] Best way to print array/list in prolog without commas, brackets, or spacing?
本文介绍了用PROLOG打印数组/列表的最佳方式是不带逗号、方括号或空格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以我才刚刚开始使用Prolog。
假设我有一个数字列表,如下所示:
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网格。
推荐答案
假设输入中的所有元素都确实是数字(或原子),则可以使用内置谓词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
这篇关于用PROLOG打印数组/列表的最佳方式是不带逗号、方括号或空格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文