为什么在某些情况下可以使用此功能,而在其他情况下却无法使用呢?

时间:2019-06-23 07:22:05

标签: lua

我正在尝试编写一个使set r具有对称关系的函数(如果它尚不具有对称关系)(例如,如果它具有2,1而不是1,2,则应加1,2)。我已经播种了它,并且在大多数情况下都可以使用,但在其他情况下却失败了,因为它没有添加应该添加的所有对,而似乎没有韵律或理由。

我检查了程序正在使用的其他功能,它们似乎都可以正常工作,因此我将其范围缩小到基本上只是一个功能不起作用但无法弄清楚原因。

--these two dictionaries provide the initial set, r.
    r={
     ['ac']=true,
     ['ba']=true,
     ['cd']=true,
     ['ad']=true,
     ['bd']=true,
     ['aa']=true,
     ['ca']=true,
     }
 let={
      ['a']=1,
      ['b']=2,
      ['c']=3,
      ['d']=4     
 }

r最初打印如下: (1,3) (2,1) (3,4) (1,4) (2,4) (3,1) (1,1)


--this function takes r as a parameter and checks the keys for the inverse ordered pair (e.g. if it has an 'ad' key but not 'da', it should add it and then return r as a now symmetric relation.

    function make_symmetric (tab)
        for k in pairs(tab) do
            if not tab[string.sub(k,2,2)..string.sub(k,1,1)] then
               tab[string.sub(k,2,2)..string.sub(k,1,1)]=true
            end
        end
        return tab
     end
然后

r打印为: (4,3) (3,1) (1,2) (1,1) (1,3) (1,4) (2,4) (2,1) (3,4)


如您所见,它并没有像需要使集合对称那样添加(4,2)和(4,1),而是成功地添加了其他集合。

谢谢!

0 个答案:

没有答案