Swift Sets 创建它们的视觉效果并搜索它们



我在谷歌上查找过,但找不到一个库可以让我创建所有集合的图像。我想知道是否有人是新的,如果存在这样的图书馆。

我的第二个问题是,目前我正在做

// create sets
var set1: Set = [2, 3, 5, 7]
var set2: Set = [2, 3, 4, 6]
var set3: Set = [1, 3, 8, 7]
var new: Set = [2,3]
var finally = [String]()
if(new.isSubset(of:set1)
{
finally.append("set1")
}
if(new.isSubset(of:set2)
{
finally.append("set2")
}

if(new.isSubset(of:set3)
{
finally.append("set3")
}

打印(最后(

这是一种可怕的方法,并且一直在研究自动化此过程的功能。我尝试创建一个集合列表:

var foo = [set1,set2,set3]

问题是我丢失了集合的名称,因为输出是

[{5,7,2,3},{6,2,4,3},{7,3,1,8}]

因此,我决定创建一个字典:

var baz = [ 'a': set1,
'b': set2,
'c': set3]
//for loop through dictionary 
var finally2 = [String]()
for(key,value) in baz {
if(newset.isSubset(of: value))
{
finally2.append(key)
}
}
print(finally2)

我不喜欢我的最终字典解决方案,并且想知道仅使用集合是否有更好的解决方案。

我建议使用数组并利用数组元素有顺序的事实,如果您坚持使用集合,则可以对NSOrderedSet使用相同的解决方案,因为集合没有顺序。

var set1: Set = [2, 3, 5, 7]
var set2: Set = [2, 3, 4, 6]
var set3: Set = [1, 3, 8, 7]
var new: Set = [2,3]
//let or:NSOrderedSet = [set1, set2, set3] // NSOrderedSet
let ArrayOfSets: Array = [set1, set2, set3]
let finalArry: [String] = ArrayOfSets.flatMap {
if new.isSubset(of: $0) {
let i = ArrayOfSets.index(of: $0)
return "Set(String(describing: i!+1))"
}
return ""
}.filter{ $0 != ""}
print(finalArry) //["Set1", "Set2"]

当然,你可以对 for 循环做同样的事情

最新更新