fun <T> Collection<T>.powerset(): Set<Set<T>> = powerset(this, setOf(setOf()))
private tailrec fun <T> powerset(left: Collection<T>, acc: Set<Set<T>>): Set<Set<T>> = when {
left.isEmpty() -> acc
else ->powerset(left.drop(1), acc + acc.map { it + left.first() })
}
fun main() {
val list1 = listOf<Int>(1,2,3,4,5,6,7,8)
val list2 = listOf<Int>(1,2,3)
val a = list1.powerset()
println(a)
println(a.size)
val b = list2.powerset()
println(b)
}
MarcinMoskala/KotlinDiscreteMathToolkit
Set of extensions for Kotlin that provides Discrete math functionalities - MarcinMoskala/KotlinDiscreteMathToolkit
github.com
'learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ์ถ ํด๋์ค์ ๋ฉ์๋ ์ด๋ฆ ์ถ๋ ฅ (0) | 2020.09.09 |
---|---|
[๋์์ธ ํจํด] ์ด๋ํฐ ํจํด (0) | 2020.09.08 |
[์๊ณ ๋ฆฌ์ฆ] ๋ฌธ์์ด ํ์์ฉ ์๋ฃ๊ตฌ์กฐ Trie (0) | 2020.09.08 |
MVVM ์ ์ฉ ์ํ ํ๋ก์ ํธ ๋ง๋ค์ด๋ณด๊ธฐ (0) | 2020.08.24 |