scala – 如何生成元组集的传递闭包?
发布时间:2020-12-16 19:19:33 所属栏目:安全 来源:网络整理
导读:生成一组元组的传递闭包的最佳方法是什么? 例: 输入集((1,2),(2,3),(3,4),(5,0)) 输出设置((1,(1,0)) 解决方法 //one transitive stepdef addTransitive[A,B](s: Set[(A,B)]) = { s ++ (for ((x1,y1) - s; (x2,y2) - s if y1 == x2) yield (x1,y2))}//repe
生成一组元组的传递闭包的最佳方法是什么?
例: >输入集((1,2),(2,3),(3,4),(5,0)) 解决方法//one transitive step def addTransitive[A,B](s: Set[(A,B)]) = { s ++ (for ((x1,y1) <- s; (x2,y2) <- s if y1 == x2) yield (x1,y2)) } //repeat until we don't get a bigger set def transitiveClosure[A,B](s:Set[(A,B)]):Set[(A,B)] = { val t = addTransitive(s) if (t.size == s.size) s else transitiveClosure(t) } println(transitiveClosure(Set((1,4)))) 这不是一个非常有效的实现,但它很简单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |