使用lua螺旋打印数组

来源:互联网 发布:淘宝运动鞋店铺 编辑:程序博客网 时间:2024/06/05 17:26

今天在网上看到一个有意思的题目,如何螺旋打印一个数组,比较好奇,就自己先用递归实现了一下。

local randomArray = {    [1] = {[1] = "a" ,[2] = "b" ,[3] = "c" ,[4] = "d" ,[5] = "e"},    [2] = {[1] = "f" ,[2] = "g" ,[3] = "k" ,[4] = "o" ,[5] = "p"},    [3] = {[1] = "z" ,[2] = "x" ,[3] = "c" ,[4] = "v" ,[5] = "b"},    [4] = {[1] = "g" ,[2] = "h" ,[3] = "j" ,[4] = "k" ,[5] = "l"}}for i,v in pairs(randomArray) do     if type(v) == "table" then        for i,v in pairs(v) do                end    endend--边界条件:#tb = 1function printAroundChars(tb)    if tb and type(tb) == "table" then         if #tb > 0 then            if #tb == 1 then                print("only one line")            else                  local w = #tb[1]                 local h = #tb                 local leftX = 1                 local topY= 1                 local xCursor = 1                 local yCursor = 1                                  for i = 1,w do                     print(tb[1][i])                 end                 for i = 2,h do                    print(tb[i][w])                 end                 for i = w-1,1,-1 do                    print(tb[h][i])                 end                 for i = h-1,2,-1 do                    print(tb[i][1])                 end                local nextTable = {}                 for i = 2,h-1 do                    for j = 2,w-1 do                            if not nextTable[i-1] then                                nextTable[i-1]={}                            end                            nextTable[i-1][j-1] =tb[i][j]                                                end                 end                printAroundChars(nextTable)                           end        end    end    endprintAroundChars(randomArray)
目前看来,这个还只是实现了,有没有更加高效的算法呢,容我想想 ~~~~

0 0