Индекс определенного элемента в многомерном списке с использованием Пролога - PullRequest
3 голосов
/ 14 марта 2012

Я пытаюсь выяснить, есть ли способ найти определенный индекс элемента в многомерном списке, например, [[1,2,3],[4,5,6],[7,8,9]]?

Как найти индекс '5' - [2] [2] или получить значение [3] [3]? Возможно ли это без того, когда размер списка неизвестен? Или есть какой-то встроенный предикат?

1 Ответ

1 голос
/ 14 марта 2012

Вы можете использовать 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 ;
...