使用Prolog的多维列表中的特定元素的索引

时间:2012-03-14 13:12:23

标签: prolog logic declarative

我试图找出是否有办法在多维列表中找到特定元素索引,例如[[1,2,3],[4,5,6],[7,8,9]]

如何找到'5' - [2] [2]的索引或得到值[3] [3]?如果列表的大小未知,是否可以这样做?或者是否有任何内置谓词?

1 个答案:

答案 0 :(得分:1)

您可以使用nth1 / 3来实现它:

index(Matrix, Row, Col, Value):-
  nth1(Row, Matrix, MatrixRow),
  nth1(Col, MatrixRow, Value).

测试用例:

?- index([[1,2,3],[4,5,6],[7,8,9]], 2, 2, X).
X = 5.

?- index([[1,2,3],[4,5,6],[7,8,9]], Row, Col, 5).
Row = Col, Col = 2 ;