我需要随机访问序言(swipl)中的矩阵位置。建议我一个库,它提供了一种在矩阵中创建和访问随机位置的方法,而无需经历处理列表的过程。
问问题
1064 次
1 回答
3
SWI-Prolog 有无限数量的术语,那么你真的不需要任何外部库。有几个用于访问术语参数的内置函数,我发现arg很方便。例如:
?- A = array(1,2,3,4,5,6,7), arg(3, A, X).
X = 3.
根据您需要处理的数据以及访问这些矩阵的频率,您可以应用数据隐藏,为自己提供首选界面。
例如,您可能需要索引验证:
?- A = array(1,2,3,4,5,6,7), arg(8, A, X).
false.
请注意,不会引发异常...
arg/3 也可以搜索匹配的参数:
?- A = array(1,2,3,4,5,6,7), arg(P, A, 4).
A = array(1, 2, 3, 4, 5, 6, 7),
P = 4 .
编辑
在 Prolog 中,分配必须始终小心处理,因为编程模型并不真正适合这种情况。但是有一些内置函数,比如nb_setarg,可以完成这项工作。请参阅相关文档部分。
于 2012-09-23T14:25:13.303 回答