如何在lua中通过包装连接矩阵

问题描述 投票:0回答:1

我不确定标题是否是正确的问题,我的编程知识很少,但我确切地知道我想要完成什么,而不是如何问要做什么,所以我只是举一个例子。

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},
}

我希望能够水平组合它们,这样我就可以制作一个更大的数组,但一旦达到一定的列数就将输入包装起来,例如,如果我想制作

mZ = mX, mY, mX, mY, mX, mY, mX

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 但当我尝试使用它时它会以某种方式破坏我的矩阵,尽管我不认为它对矩阵有用。 我放弃了尝试以一种简洁的方式做到这一点,而只是创建一个递归函数来手动将一个矩阵中的值添加到另一个矩阵中,但当我尝试添加扩展它的值时,它似乎会移动矩阵中的现有值.

我设法创建一个带有表插入的函数来将矩阵添加在一起,但是在函数中使用矩阵作为参数最终不会像我假设的那样单独使用它们,而是直接使用矩阵本身,所以如果我使用参数 A 和 B在分别与 mX 和 mY 相关的函数中,它不将矩阵复制到 A 和 B,而是仅使用 mX 和 mY

arrays matrix lua concatenation lua-table
1个回答
0
投票

你熟悉for循环吗?可以肯定地这样假设,因为您已经在使用矩阵了,但如果您没有,那么我建议您查找它们。据我所知,除了编写 for 循环之外,没有一种简单的方法可以做到这一点,这远非绝对正确。

首先,您需要做的主要工作是如何将两个表连接在一起。我会通过写作来做到这一点

for i=1,#table2,1 do

table1[#table1+1]=table2[i]

end

假设您的表是 1 索引的。
这将遍历 table2 并将每个项目添加到 table1 的末尾。
使用另一个 for 循环垂直执行此操作。
肯定有更优化的方法来做到这一点,但由于看起来你仍在学习,我认为你应该专注于基础知识。

现在,包装可能会有点困难。如果到达某个线点,您将需要在 mZ 中创建 5 个(在本例中)新表。我不太确定具体细节,无论您是否只想在矩阵之间进行换行,或者只是是否达到某个列。在这两种情况下,它都应该是一个简单的条件。

我个人会使用“指针”来指示当前修改的矩阵的顶行。

© www.soinside.com 2019 - 2024. All rights reserved.