루아의 테이블의 활용은 막힘이 없습니다.
앞서 우리는 테이블을 이용하여 배열을 만들어 보는 것을 알아 보았습니다.
이제 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 에 적합한 구조를 제공하고 있습니다.
'Programming > LUA' 카테고리의 다른 글
[루아스크립트/프로그래밍]루아(LUA) Types Tutorial (2) | 2018.05.21 |
---|---|
[루아스크립트/프로그래밍]루아(LUA) 연결리스트 (0) | 2018.05.20 |
[루아스크립트/프로그래밍]루아(LUA)배열 (Array) (0) | 2018.05.18 |
[루아스크립트/프로그래밍]루아(LUA)사용자 정의 iterator 함수 (0) | 2018.05.17 |
[루아스크립트/프로그래밍]루아(LUA)함수의 인수는 global 인가 local 인가? (0) | 2018.05.17 |