반응형

루아의 테이블의 활용은 막힘이 없습니다.

앞서 우리는 테이블을 이용하여 배열을 만들어 보는 것을 알아 보았습니다.

이제 2차원 배열을 알아보도록 하겠습니다.

 

    mt = {}          -- create the matrix
    for i=1,N do
      mt[i] = {}     -- create a new row
      for j=1,M do
        mt[i][j] = 0
      end
    end

위와 같이 할 경우, 물론 N 과 M 은 그 값이 미리 선언이 되어 있어야 겠지요, M*N 의 2차원 배열이 만들어 집니다.

이는 테이블의 각 요소를 테이블로 정하는 방법으로 구현한 것 입니다.

즉 mt 에 들어가는 것은 다른 배열의 row 로 사용할 또 다른 배열인 것 입니다.

 

위와 같은 경우 꼭 집어서 M*N 행이 아닐 수 있습니다. 희소행렬(Sparse matrix)의 형태가 되겠죠.

M*N 행렬이면  1열의 크기와 2열의 크기가 같아야 되지만 위의 경우 각 열이 또다른 table 이기 때문이고, table은 그 특성상

각각의 크기를 가질 수 있기 때문에 희소행렬로 보아야 할 것 입니다.

 

다음과 같은 것을 살펴봅시다.

 

    mt = {}          -- create the matrix
    for i=1,N do
      for j=1,M do
        mt[i*M + j] = 0
      end
    end


이는 전체적으로는 테이블이 하나만 생성 됩니다. 즉 1차원적인 테이블을 i , j 행렬의 계산에 의하여 2차원화 된 형상 입니다.

앞의 것 보다 사용하기는 다소 불편할지는 몰라도 M*N 행렬을 정확히 처리함은 의심의 여지가 없습니다.

 

아무튼 루아의 table을 이용한 다차원 행렬은 sparse matrix 에 적합한 구조를 제공하고 있습니다.

+ Recent posts