您如何在lua中检查行/列明智的迭代

发布于 2025-01-23 13:17:46 字数 985 浏览 0 评论 0原文

我一直在编写代码以在列Wise Iteration中执行循环,这使我一直困惑,并且无法区分列和行明智的迭代。

我已经在下面编写了这些代码以执行列明智的迭代,但我不确定它是否以正确的方式执行。还可以帮助我了解有关行/列迭代的更多示例

r = {}

for x = 1, 5 do
    table.insert(r, {})
end

for x = 1, 5 do
    for y = 1, 5 do
        table.insert(r[y], y)
        -- table.insert(r[x], 'A')
    end
end

for x = 1, 5 do
    for y = 1, 5 do
        io.write(r[x][y], ' : ')        
        -- io.write(r[y][x], ' :: ')
    end
    print()
end

输出:

1 : 1 : 1 : 1 : 1 : 
2 : 2 : 2 : 2 : 2 :
3 : 3 : 3 : 3 : 3 :
4 : 4 : 4 : 4 : 4 :
5 : 5 : 5 : 5 : 5 :

以下这是针对行明智的迭代。我认为!

L = {}

for i = 1, 5 do
    table.insert(L, {})
    for j = 1, 5 do
        L[i][j] = " # "
    end
end

for i = 1, 5 do
    for j = 1, 5 do
        io.write(L[i][j])
    end
    print()
end

输出:

 #  #  #  #  # 
 #  #  #  #  #
 #  #  #  #  #
 #  #  #  #  #
 #  #  #  #  # 

I have been writing codes to perform loop in Column wise iteration and it makes me confuse all the time and I can't distinguish between Column and Row Wise Iteration.

I've written these code below to perform Column Wise Iteration but I'm not sure that it is performing in the right way. Also help me to understand with more examples of Row/Column Iteration

r = {}

for x = 1, 5 do
    table.insert(r, {})
end

for x = 1, 5 do
    for y = 1, 5 do
        table.insert(r[y], y)
        -- table.insert(r[x], 'A')
    end
end

for x = 1, 5 do
    for y = 1, 5 do
        io.write(r[x][y], ' : ')        
        -- io.write(r[y][x], ' :: ')
    end
    print()
end

OUTPUT:

1 : 1 : 1 : 1 : 1 : 
2 : 2 : 2 : 2 : 2 :
3 : 3 : 3 : 3 : 3 :
4 : 4 : 4 : 4 : 4 :
5 : 5 : 5 : 5 : 5 :

This one below is for Row Wise Iteration. I think!

L = {}

for i = 1, 5 do
    table.insert(L, {})
    for j = 1, 5 do
        L[i][j] = " # "
    end
end

for i = 1, 5 do
    for j = 1, 5 do
        io.write(L[i][j])
    end
    print()
end

OUTPUT:

 #  #  #  #  # 
 #  #  #  #  #
 #  #  #  #  #
 #  #  #  #  #
 #  #  #  #  # 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ㄖ落Θ余辉 2025-01-30 13:17:46

当更可视化并遵循@LMD时,您会看到更多。
我有一段时间,所以随时可以玩...

Lua 5.4.4  Copyright (C) 1994-2022 Lua.org, PUC-Rio
> L = require('rowcol')
> L:ij()
    A   B   C   D   E
    F   G   H   I   J
    K   L   M   N   O
    P   Q   R   S   T
    U   V   W   X   Y
> L:ji()
    A   F   K   P   U
    B   G   L   Q   V
    C   H   M   R   W
    D   I   N   S   X
    E   J   O   T   Y
> io.open('rowcol.lua'):read('a')
-- rowcol.lua

local L = setmetatable({ -- Data Part
[0x1] = {[0x1] = '\65', [0x2] = '\66', [0x3] = '\67', [0x4] = '\68', [0x5] = '\69'},
[0x2] = {[0x1] = '\70', [0x2] = '\71', [0x3] = '\72', [0x4] = '\73', [0x5] = '\74'},
[0x3] = {[0x1] = '\75', [0x2] = '\76', [0x3] = '\77', [0x4] = '\78', [0x5] = '\79'},
[0x4] = {[0x1] = '\80', [0x2] = '\81', [0x3] = '\82', [0x4] = '\83', [0x5] = '\84'},
[0x5] = {[0x1] = '\85', [0x2] = '\86', [0x3] = '\87', [0x4] = '\88', [0x5] = '\89'}
},{__index = { -- Methods Part
ij = function(self, i, ie, j, je)
for i = i or 0x1, ie or 0x5 do
    for j = j or 0x1, je or 0x5 do
        io.write('\t', self[i][j])
    end
    print()
end
end,
ji = function(self, i, ie, j, je)
for i = i or 0x1, ie or 0x5 do
    for j = j or 0x1, je or 0x5 do
        io.write('\t', self[j][i])
    end
    print()
end
end
}
})

return L

两种方法都可以处理 range参数的两个...

> L:ji(5,5)
    E   J   O   T   Y
> L:ij(5,5)
    U   V   W   X   Y
> L:ij(5,5,5,5)
    Y
> L:ij(3,5,3,5)
    M   N   O
    R   S   T
    W   X   Y
> L:ji(3,5,3,5)
    M   R   W
    N   S   X
    O   T   Y
> L:ji(1,5,1,5)
    A   F   K   P   U
    B   G   L   Q   V
    C   H   M   R   W
    D   I   N   S   X
    E   J   O   T   Y
> L:ji(1,5,1,4)
    A   F   K   P
    B   G   L   Q
    C   H   M   R
    D   I   N   S
    E   J   O   T
> L:ji(1,5,1,3)
    A   F   K
    B   G   L
    C   H   M
    D   I   N
    E   J   O

When more visualized and followed @LMD then you see more.
I had some time so feel free to play around with...

Lua 5.4.4  Copyright (C) 1994-2022 Lua.org, PUC-Rio
> L = require('rowcol')
> L:ij()
    A   B   C   D   E
    F   G   H   I   J
    K   L   M   N   O
    P   Q   R   S   T
    U   V   W   X   Y
> L:ji()
    A   F   K   P   U
    B   G   L   Q   V
    C   H   M   R   W
    D   I   N   S   X
    E   J   O   T   Y
> io.open('rowcol.lua'):read('a')
-- rowcol.lua

local L = setmetatable({ -- Data Part
[0x1] = {[0x1] = '\65', [0x2] = '\66', [0x3] = '\67', [0x4] = '\68', [0x5] = '\69'},
[0x2] = {[0x1] = '\70', [0x2] = '\71', [0x3] = '\72', [0x4] = '\73', [0x5] = '\74'},
[0x3] = {[0x1] = '\75', [0x2] = '\76', [0x3] = '\77', [0x4] = '\78', [0x5] = '\79'},
[0x4] = {[0x1] = '\80', [0x2] = '\81', [0x3] = '\82', [0x4] = '\83', [0x5] = '\84'},
[0x5] = {[0x1] = '\85', [0x2] = '\86', [0x3] = '\87', [0x4] = '\88', [0x5] = '\89'}
},{__index = { -- Methods Part
ij = function(self, i, ie, j, je)
for i = i or 0x1, ie or 0x5 do
    for j = j or 0x1, je or 0x5 do
        io.write('\t', self[i][j])
    end
    print()
end
end,
ji = function(self, i, ie, j, je)
for i = i or 0x1, ie or 0x5 do
    for j = j or 0x1, je or 0x5 do
        io.write('\t', self[j][i])
    end
    print()
end
end
}
})

return L

Both methods can handle both for range parameter...

> L:ji(5,5)
    E   J   O   T   Y
> L:ij(5,5)
    U   V   W   X   Y
> L:ij(5,5,5,5)
    Y
> L:ij(3,5,3,5)
    M   N   O
    R   S   T
    W   X   Y
> L:ji(3,5,3,5)
    M   R   W
    N   S   X
    O   T   Y
> L:ji(1,5,1,5)
    A   F   K   P   U
    B   G   L   Q   V
    C   H   M   R   W
    D   I   N   S   X
    E   J   O   T   Y
> L:ji(1,5,1,4)
    A   F   K   P
    B   G   L   Q
    C   H   M   R
    D   I   N   S
    E   J   O   T
> L:ji(1,5,1,3)
    A   F   K
    B   G   L
    C   H   M
    D   I   N
    E   J   O
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文