gpt4 book ai didi

scala - 如何生成元组集合的传递闭包?

转载 作者:行者123 更新时间:2023-12-04 10:43:56 25 4
gpt4 key购买 nike

生成一组元组的传递闭包的最佳方法是什么?

例子:

  • 输入Set((1, 2), (2, 3), (3, 4), (5, 0))
  • 输出Set((1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (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,2), (2,3), (3,4))))

    这不是一个非常有效的实现,但是很简单。

    关于scala - 如何生成元组集合的传递闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962648/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com