2011-11-28 16 views
1

2 차원 배열이 있지만 배열에 저장된 특정 요소의 열 인덱스를 찾을 수 있습니까?
찾고있는 요소가 2 행에 저장되어 있다고 가정하지만 해당 열 인덱스를 모른다. 그러나 어떻게 컬럼 인덱스를 찾을 수 있습니까?
예를 들어, 나는 2 차원 배열과 같은 요소의 목록,Lisp에서 2 차원 배열에있는 요소의 열 인덱스를 찾는 방법은 무엇입니까?

L = (A B C) 

을하고 난 "A"가 배열의 행이 저장됩니다 알고, 지금은 열을 찾으려면 배열의 "A"에 대한 지수는, 그래서

(eval (first L)) 

을 시도했지만 오류 메시지가 감사
The variable A is unbound. 

을 받았다.

+4

왜이 경우 'EVAL'을 사용하려고합니까? 그것은 당신이하려는 일과 아무 상관이 없습니다. – finnw

답변

0

저는 내장 함수가 이것을 할 수 있다고 생각하지 않습니다. 이런 식으로 뭔가를 시도 :

(defun column-position (array row item &key (test #'eql)) 
    (loop for i below (array-dimension array 1) 
     when (funcall test (aref array row i) item) 
     do (return i))) 
3

이것은 (*a*라는 배열에 대한) 작동합니다 :

(position 'a 
      (make-array (array-dimension *a* 1) 
         :displaced-to *a* 
         :displaced-index-offset (array-row-major-index *a* 2 0))) 

어긋난 배열은 기존의 배열에 다른보기와 같다. 이 코드는 배열의 두 번째 행을 보는 벡터 인 변위 배열을 만든 다음 position을 사용하여 그 안에있는 요소의 인덱스를 찾습니다.

관련 문제