用PROLOG打印数组/列表的最佳方式是不带逗号、方括号或空格? [英] Best way to print array/list in prolog without commas, brackets, or spacing?

查看:28
本文介绍了用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆