LUA-数组管理(添加/删除元素)

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

我有两个数组:

A={4,8,12}
B={1,2,3,5,6,7,9,10,11}

这些代码的本质是,在调用函数时,从数组B中获取一个随机值,按照队列的顺序将其插入到数组A中,然后在另一个循环中,从数组B中删除该随机值。 。

local function Change ()
    local q= math.random(1, #B)

    for i = 1, #A do
        if B[q]<A[i] then
            for t=#A, i, -1 do
                A[t+1]=A[t]
            end
            A[i]=B[q]
            break
        end
    end

    while q<= #B-1 do
        B[q]=B[q+1]
        q=q+1
    end
    B[q]=nil

    for x = 1, #A do print ("Current: ", A[x]) end
    for y = 1, #B do print ("Free: ", B[y]) end
end

现在,对于反问题,我想使用相同的代码-从数组A中获取一个随机值,按照队列的顺序将其插入到数组B中,然后从数组A中删除该值。

所以我想要这样的东西:

Change (A, B) – find random value in B and insert to A (arrays)
Change (B, A) – find random value in A and insert to B (arrays)

Lua中有没有办法做到这一点?指针左右...

P.S。我不想为此任务使用“ table.sort / table.insert”等。

P.P.S。我们在带有指针的线程中找到了解决方案,但是今天我找到了另一个解决方案:

C={{4,8,12},{1,2,3,5,6,7,9,10,11}}

Local function Change (x,y)

    for i = 1, #C[x] do
        if C[y][a]<C[x][i] then
            for t=#C[x], i, -1 do
                C[x][t+1]=C[x][t]
            end
            C[x][i]=C[y][a]
            break
        end
    end

    while a<= #C[y]-1 do
        C[y][a]=C[y][a+1]
        a=a+1
    end
    C[y][a]=nil

    for i = 1, #C[1] do print ("in C1, Current:", C[1][i]) end
    for i = 1, #C[2] do print ("in C2, Free", C[2][i]) end
end

并调用Change(1,2)或Change(2,1)

您如何看待,哪种方法性能更好?

我还有LUA语法的另一个问题

我做的时候

C={ A={4,8,12}, B={1,2,3,5,6,7,9,10,11} }

并尝试在函数#C [1]中出现错误«试图获取字段'?'的长度。 (一个零值)»,但是很明显写C.A或C.B而不是C [1],C [2]

我必须像]那样初始化它们>

A={4,8,12}, B={1,2,3,5,6,7,9,10,11}, C={A,B}

但出现其他错误«使用C.A或C.B时试图获得字段'C'的长度(零值)»

我有两个数组:A = {4,8,12} B = {1,2,3,5,6,7,9,10,11}这些代码的本质是,当调用函数,从数组B中获取一个随机值,并按照队列的顺序将其插入到...

arrays sorting lua
1个回答
0
投票

在Lua中,表是放置在变量中时唯一共享的对象。

mytable = {1,2,3}
newtable = mytable

newtable[1] = "one"

print(mytable[1]) --> prints: "one"
© www.soinside.com 2019 - 2024. All rights reserved.