/ / Jak stworzyć listę list w Scali w stylu programowania funkcjonalnego - scala, programowanie funkcjonalne, czysto funkcjonalne

Jak stworzyć listę list w Scali w funkcjonalnym stylu programowania - scala, funkcjonalne-programowanie, czysto funkcjonalne

Chcę utworzyć funkcję w Scali, która dała List[Int] zwraca a List[List[Int]]. Na przykład getCombs(List(1,2)) powinien wrócić List(List(1), List(2), List(1,2)).

Studiuję programowanie funkcjonalne, więc chciałbym wykonać moje zadanie, używając tego paradygmatu.

Stworzyłem następującą funkcję i działa, ale myślę, że istnieje lepszy sposób na wykonanie pracy w funkcjonalnym stylu programowania.

def getCombs(coins: List[Int]): List[List[Int]] = {

var l = List(coins)
var i = 0
for (i <- 1 to coins.length - 1) {
var it = coins.combinations(i)
while (it.hasNext) {
val el = it.next
val newL = el :: l
l = newL

}

}
return l
}

Odpowiedzi:

2 dla odpowiedzi № 1

Najpierw tworzę zakres wszystkich długości kombinacji, które chcę stworzyć, a następnie używam flatMap stworzyć wszystkie kombinacje i sporządzić z nich listę:

def allCombinations(list: List[Int]): List[List[Int]] = {
(1 to list.length).flatMap(list.combinations(_)).toList
}

1 dla odpowiedzi nr 2
(1 to coins.length).flatMap {
coins.combinations(_)
}.toList