如何在Lua中实现带换行的矩阵拼接?
Lua矩阵横向拼接并自动换行需求
本人编程基础薄弱,明确需求但无法准确表述,以下用示例说明具体需求:
现有两个Lua矩阵:
mX = { {X,0,0,0,X}, {0,X,0,X,0}, {0,0,X,0,0}, {0,X,0,X,0}, {X,0,0,0,X}, } mY = { {X,0,0,0,X}, {0,X,0,X,0}, {0,0,X,0,0}, {0,X,0,0,0}, {X,0,0,0,0}, }
需要将它们按指定顺序横向拼接成更大的二维数组,当列数达到指定值时自动换行。例如按mX,mY,mX,mY,mX,mY,mX的顺序拼接,得到目标矩阵mZ:
mZ = { {X,0,0,0,X,X,0,0,0,X,X,0,0,0,X,X,0,0,0,X,X,0,0,0,X}, {0,X,0,X,0,0,X,0,X,0,0,X,0,X,0,0,X,0,X,0,0,X,0,X,0}, {0,0,X,0,0,0,0,X,0,0,0,0,X,0,0,0,0,X,0,0,0,0,X,0,0}, {0,X,0,X,0,0,X,0,0,0,0,X,0,X,0,0,X,0,0,0,0,X,0,X,0}, {X,0,0,0,X,X,0,0,0,0,X,0,0,0,X,X,0,0,0,0,X,0,0,0,X}, {X,0,0,0,X,X,0,0,0,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,X,0,X,0,0,X,0,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,X,0,0,0,0,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,X,0,X,0,0,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {X,0,0,0,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, }
尝试过程与问题
- 用ChatGPT提问,因表述不清未得到符合需求的方案
- 使用
table.insert时出现矩阵损坏问题 - 曾计划编写递归函数手动赋值,但会导致现有值偏移
编辑1:用table.insert编写了拼接函数,但函数参数直接引用原矩阵而非复制,导致修改参数会影响原矩阵。
编辑2:已实现一个可用的catcat函数,虽未按预期左对齐换行而是居中放置,但能满足当前需求,不过存在不同高度矩阵拼接的问题:
k = 0 function catcat(kot,meow) if #kot[1 + k] >= 77 then k = k + 6 end for i=1,#meow do for ii=1, #meow[i] do table.insert(kot[i + k],meow[i][ii]) end end end mKOT = {{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}}
内容的提问来源于stack exchange,提问作者DistantTide
相关产品推荐
相关产品推荐

