Combinations: Difference between revisions

no edit summary
m (Fix Perl 6 -> Raku in comments)
No edit summary
Line 2,719:
 
=={{header|Kotlin}}==
===Recursion===
{{trans|Pascal}}
<lang scalakotlin>class Combinations(val m: Int, val n: Int) {
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>
 
Anonymous user