Скала комбинации с префиксом - PullRequest
0 голосов
/ 18 декабря 2018

Что такое элегантный способ генерировать комбинации с префиксами в Scala?

"""
   ((pre_first, pre_second), 
   (pre_first, pre_second, thing1),
   (pre_first, pre_second, thing2),
   (pre_first, pre_second, thing3),
   (pre_first, pre_second, thing1, thing2),
   (pre_first, pre_second, thing1, thing3),
   (pre_first, pre_second, thing2, thing3))
""".stripMargin
val prefixes = Seq("pre_first", "pre_second")
val things = Seq("thing1", "thing2", "thing3")

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018
(0 to things.size).flatMap(i=>things.combinations(i)).map(prefixes ++ _)
0 голосов
/ 18 декабря 2018
    things.toSet.subsets.map(elem => prefixes ++ elem).foreach(println)
List(pre_first, pre_second)
List(pre_first, pre_second, thing1)
List(pre_first, pre_second, thing2)
List(pre_first, pre_second, thing3)
List(pre_first, pre_second, thing1, thing2)
List(pre_first, pre_second, thing1, thing3)
List(pre_first, pre_second, thing2, thing3)
List(pre_first, pre_second, thing1, thing2, thing3)
...