3
我試圖找出是否有任何方法可以在多維列表中找到特定元素索引,例如[[1,2,3],[4,5,6],[7,8,9]]
?使用Prolog的多維列表中特定元素的索引
如何查找'5' - [2] [2]或獲得值[3] [3]的索引?當列表的大小未知時,這可能沒有?或者是否有內置的謂詞?
我試圖找出是否有任何方法可以在多維列表中找到特定元素索引,例如[[1,2,3],[4,5,6],[7,8,9]]
?使用Prolog的多維列表中特定元素的索引
如何查找'5' - [2] [2]或獲得值[3] [3]的索引?當列表的大小未知時,這可能沒有?或者是否有內置的謂詞?
您可以使用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 ;
好的,謝謝。無論如何,我會嘗試重新定義它有多難? – whd 2012-03-14 14:33:07
你的意思是你想重寫nth1/3嗎?它不應該很複雜,你可能想看看實現'listing(nth1/3)'等。 – gusbro 2012-03-14 14:41:54
只是謂詞索引 – whd 2012-03-14 15:31:59