fillmore 发表于 2013-8-22 10:58:54

怎样比较2个table的值是否相同

星宿新手任务推木头,我是根据每个房间出口不同触发的,可是出口顺序每次重启都会变动,所以想搞个一次性解决的方法。

我把路口转成数组后,不会比较了。

aa = {"east","south"}
lukou = {{"south","east"},{"north"}}


怎么得出aa == lukou啊。

北大侠客行MUD,中国最好的MUD

tianheng 发表于 2013-8-22 11:33:04

本帖最后由 tianheng 于 2013-8-22 11:44 AM 编辑

没有测试的,不知道是否能满足
function tableCompare(tab1, tab2)
        local rs = false
        if #tab1 == #tab2 then
                for k, v in ipairs(tab1) do
                        for _k, _v in ipairs(tab2) do
                                if v == _v then
                                        table.remove(tab2, _k)
                                end
                        end
                end
                if tab2 == nil or #tab2 == 0 then
                        rs = true
                end
        end
        return rs
end

tianheng 发表于 2013-8-22 12:07:42

测试应该是没有问题的,再发一个
function _tableCompare(tab1, tab2)
        local rs = false
        if #tab1 == #tab2 then
                table.sort(tab1)
                table.sort(tab2)
                local s1 = table.concat(tab1, ",")
                local s2 = table.concat(tab2, ",")
                rs = s1 == s2
        end
        return rs
end

fillmore 发表于 2013-8-22 12:18:48

谢谢,我试一试,不是学这个的,只能写一点简单的,每次写点东西要调半天hze

hijacker 发表于 2013-8-22 21:25:05

回复 4# tianheng


    哪个效率高?

tianheng 发表于 2013-8-22 21:26:51

没有测试,个人推荐第二个吗,起码简单些

zine 发表于 2013-8-23 00:19:47

星宿新手任务我自己测试做机器人时候有非常简单的解决方法,根本没必要对比table这么复杂的。

gsnake 发表于 2013-8-23 07:45:32

推荐暴力走法,例如向北N步,向东N步(N大于地图房间数),这样就可以保证你无论从哪出发都可以走到最东北角,再走回正常出口即可

zues 发表于 2013-8-23 10:28:28

暴力流+1,星宿新手任务全自动机器是最简单的
页: [1]
查看完整版本: 怎样比较2个table的值是否相同