Anonymous user
Combinations: Difference between revisions
no edit summary
Thundergnat (talk | contribs) m (Fix Perl 6 -> Raku in comments) |
No edit summary |
||
Line 2,719:
=={{header|Kotlin}}==
===Recursion===
{{trans|Pascal}}
<lang
private val combination = IntArray(m)
Line 2,758 ⟶ 2,759:
1 3 4
2 3 4
</pre>
===Lazy===
{{trans|C#}}
<lang kotlin>import java.util.LinkedList
inline fun <reified T> combinations(arr: Array<T>, m: Int) = sequence {
val n = arr.size
val result = Array(m) { arr[0] }
val stack = LinkedList<Int>()
stack.push(0)
while (stack.isNotEmpty()) {
var resIndex = stack.size - 1;
var arrIndex = stack.pop()
while (arrIndex < n) {
result[resIndex++] = arr[arrIndex++]
stack.push(arrIndex)
if (resIndex == m) {
yield(result.toList())
break
}
}
}
}
fun main() {
val n = 5
val m = 3
combinations((1..n).toList().toTypedArray(), m).forEach { println(it.joinToString(separator = " ")) }
}
</lang>
{{out}}
<pre>
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
</pre>
|