Lua實戰之整體移動table中的元素

Description

testTbl = {1, 2, 3, 4, 5, 6}

將 testTbl 看做首尾元素相鄰的環,請實現將表中所有元素向前移動 n 個位置!

e.g.

n = 1 移動之後的結果爲:{2, 3, 4, 5, 6, 1}

n = 2 移動之後的結果爲:{3, 4, 5, 6, 1, 2}

Implemention

local LogManager = require("LogManager")

function moveAllEleTest(originTbl, n)
    if type(originTbl) ~= "table" then return end
    if #originTbl == 0 then return end

    local newTbl = {}
    for i = 1, #originTbl do
        newTbl[i] = originTbl[(n - 1 + i) % #originTbl + 1]
    end
    return newTbl
end

local testTbl = {1, 2, 3, 4, 5, 6}
LogManager:dump(moveAllEleTest(testTbl, 1), "n = 1")
--[[
- "n = 1" = {
-     1 = 2
-     2 = 3
-     3 = 4
-     4 = 5
-     5 = 6
-     6 = 1
- }
]]
LogManager:dump(moveAllEleTest(testTbl, 2), "n = 2")
--[[
- "n = 2" = {
-     1 = 3
-     2 = 4
-     3 = 5
-     4 = 6
-     5 = 1
-     6 = 2
- }
]]
LogManager:dump(moveAllEleTest(testTbl, 5), "n = 5")
--[[
- "n = 5" = {
-     1 = 6
-     2 = 1
-     3 = 2
-     4 = 3
-     5 = 4
-     6 = 5
- }
]]

ps:

表的長度爲 len,向前移動 n 個位置,就是向後移動 len - n 個位置!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章