Ho un set di elementi di un certo tipo e voglio generare il suo set di alimentazione.Come generare il set di alimentazione di un set in Scala
Ho cercato sul Web e non sono riuscito a trovare alcun codice Scala che indirizzi questa specifica attività.
Questo è quello che mi è venuto in mente. Permette di limitare la cardinalità dei set prodotti dal parametro length.
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
}
Questo non include il set vuoto. Per fare ciò è necessario modificare l'ultima riga del metodo semplicemente per res + Set()
Qualche suggerimento su come questo può essere realizzato in uno stile più funzionale?
Mi piace che - la mia domanda sarebbe, che altro è 'filterM' utilizzato per? –
@oxbow_lakes È possibile ad esempio fare un filtro di predicato a tre vie. ('x => if ...' 'Nessuno' /' Alcuni (false) '/' Alcuni (true) '). Un singolo 'None' cancellerebbe l'intero input. Ma immagino che ci saranno usi molto più avanzati con monadi esotici di cui non ho mai sentito parlare. – Debilski
È integrato, tra l'altro: 'Elenco (1, 2, 3) .powerset'. :) – Debilski