加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – Lua:在数组中“拖动”元素序列

发布时间:2020-12-14 21:44:29 所属栏目:大数据 来源:网络整理
导读:我正在尝试创建一个函数,将一系列连续元素“拖动”到数组中的新位置,约束到数组的当前大小.其他项目应围绕“拖动”项目摇摆. 例如,如果我的数组有7个元素,我想拖动中间三个… 1,2,3,4,5,6,7 -- keysa,b,C,D,E,f,g -- values 大写字母是我想要“拖动”的字符.
我正在尝试创建一个函数,将一系列连续元素“拖动”到数组中的新位置,约束到数组的当前大小.其他项目应围绕“拖动”项目摇摆.

例如,如果我的数组有7个元素,我想拖动中间三个…

1,2,3,4,5,6,7  <-- keys
a,b,C,D,E,f,g  <-- values

大写字母是我想要“拖动”的字符.如果我拖动到数组的开头(拖动到1),数组将如下所示:

1,7  <-- keys
C,a,g  <-- values

如果我拖动到位置5(或上面 – 不能拖动到当前数组大小之外),g,E <-- values

知道如何使用Lua以非狡猾的方式实现这一目标吗?

解决方法

这是在Lua 5.3中使用 table.move的版本.

它将要拖动的组复制到另一个表中,并向上或向下移动值以为该组腾出空间.

function drag(t,src,len,dest)
    local copy = table.move(t,src + len - 1,1,{})

    if src >= dest then
        table.move(t,dest,src - 1,dest + len)
    else 
        table.move(t,src + len,dest + len - 1,src)
    end

    table.move(copy,t)
 end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读