【问题标题】:Index of specific element in a multi-dimensional list using Prolog使用Prolog的多维列表中特定元素的索引
【发布时间】:2012-03-14 13:12:22
【问题描述】:

我正在尝试找出是否有任何方法可以在多维列表中找到特定元素索引,例如[[1,2,3],[4,5,6],[7,8,9]]

如何找到 '5' - [2][2] 的索引或获取值 [3][3] ?如果列表的大小未知,这可能吗?还是有任何内置谓词?

【问题讨论】:

    标签: prolog logic declarative


    【解决方案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 ;
    

    【讨论】:

    • 太好了,谢谢。无论如何,我会尝试重新定义它有多难?
    • 你的意思是要重写 nth1/3 吗?它应该不复杂,您可能希望看到实现 listing(nth1/3) 等。
    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多