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 個位置!