创建一个 X 行 2 列的表/数组,将行配对并对其中一列进行排序(Lua)?

我是一个完全不懂 Lua 的新手,所以我需要你的帮助:

我打算从接收器传感器中读取值,它返回以下两个值:

  1. 接收器和发射器之间的距离
  2. 对应于发射器的索引 ID(1、2、3 等等)

Lua 表格对排序真的很令人困惑,我不明白它。

这是我的不工作代码:

distance = {}
for i=1,#robot.range_and_bearing do
        v= robot.range_and_bearing[i].range
        table.insert(distance,v, i)
    end
    table.sort(distance)
    table.print(distance)

其中,

#robot.range_and_bearing = 感测到的连接数

robot.range_and_bearing[i].range 返回到该发射器的距离

数组不对任何一列进行排序。 有什么建议可以确保对 range 值“v”进行排序,同时仍然获得正确的相应机器人 ID“i”吗?

我感激所有的答案,但是简单的答案更好:p

点赞
用户2226988
用户2226988

您似乎在说传感器发射器有一个身份,传感器读数应该标记上该身份。

我会尽早进行这个操作。如果您无法在创建 robot.range_and_bearing 时进行此操作,您可以稍后这样做(假设索引是适当的标识符):

for i=1,#robot.range_and_bearing do
    robot.range_and_bearing[i].transmitter = i
end

当然,您可以将其与以下步骤结合使用,它只是复制表格(可能您没有想要修改原始表格的顺序):

distance = {}
for i=1,#robot.range_and_bearing do
    table.insert(distance,robot.range_and_bearing[i])
end

现在,您可以按距离排序:

table.sort(distance, function(a,b) a.range < b.range end)

并打印:

for i=1,#distance do
    print(distance[i].transmitter, distance[i].range)
end
2014-06-09 10:49:19