Как сгенерировать набор мощности набора в Scala

У меня есть набор элементов определенного типа, и я хочу сгенерировать его набор мощности.

Я искал в Интернете и не смог найти код Scala, который решает эту конкретную задачу.

Это то, что я придумал. Это позволяет вам ограничивать кардинальность наборов, создаваемых параметром длины.

def power[T](set: Set[T], length: Int) = {
   var res = Set[Set[T]]()
   res ++= set.map(Set(_))

   for (i <- 1 until length)
      res = res.map(x => set.map(x + _)).flatten

   res
   }

Это не будет включать пустой набор. Для этого вам нужно будет изменить последнюю строку метода просто на res + Set()

Любые предложения, как это можно сделать в более функциональном стиле?

18
задан Björn Jacobs 20 July 2012 в 15:09
поделиться