如何查找如果数组是另一个数组的子集?(How to find if an array is subs

2019-10-21 18:13发布

在Python中,我们可以用一组或itertools另找列表中的一个列表的子集,我们该怎么做同样的在Lua?

a = {1,2,3}
b = {2,3}

如何检查是b的一个子集?

Answer 1:

集可以使用表作为查找起坐会员测试Lua的实现( 如编程做在Lua )。 在该表中的键是集合的元素和值要么true如果该元素属于集合或nil其它。

a = {[1]=true, [2]=true, [3]=true}
b = {[2]=true, [3]=true}

-- Or create a constructor
function set(list)
   local t = {}
   for _, item in pairs(list) do
       t[item] = true
   end
   return t
end

a = set{1, 2, 3}
b = set{2, 3}

编写组操作这种形式很简单,以及( 这里 )。

function subset(a, b)
   for el, _ in pairs(a) do
      if not b[el] then
         return false
      end
    end
   return true
end

print(subset(b, a)) -- true
print(subset(set{2, 1}, set{2, 2, 3, 1})) -- true

a[1] = nil -- remove 1 from a
print(subset(a, b)) -- true

如果ab必须保持以阵列形式然后子集能够像这样被实现:

function arraysubset(a, b)
   local s = set(b)
   for _, el in pairs(a) -- changed to iterate over values of the table
      if not s[el] then
         return false
      end
   end
   return true
end


文章来源: How to find if an array is subset of another array?