【发布时间】:2012-03-14 13:12:22
【问题描述】:
我正在尝试找出是否有任何方法可以在多维列表中找到特定元素索引,例如[[1,2,3],[4,5,6],[7,8,9]]?
如何找到 '5' - [2][2] 的索引或获取值 [3][3] ?如果列表的大小未知,这可能吗?还是有任何内置谓词?
【问题讨论】:
标签: prolog logic declarative
我正在尝试找出是否有任何方法可以在多维列表中找到特定元素索引,例如[[1,2,3],[4,5,6],[7,8,9]]?
如何找到 '5' - [2][2] 的索引或获取值 [3][3] ?如果列表的大小未知,这可能吗?还是有任何内置谓词?
【问题讨论】:
标签: prolog logic declarative
你可以使用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 ;
【讨论】:
listing(nth1/3) 等。