32 lines
474 B
Plaintext
32 lines
474 B
Plaintext
func forcomb(callback, n, k) {
|
|
|
|
if (k == 0) {
|
|
callback([])
|
|
return()
|
|
}
|
|
|
|
if (k<0 || k>n || n==0) {
|
|
return()
|
|
}
|
|
|
|
var c = @^k
|
|
|
|
loop {
|
|
callback([c...])
|
|
c[k-1]++ < n-1 && next
|
|
var i = k-2
|
|
while (i>=0 && c[i]>=(n-(k-i))) {
|
|
--i
|
|
}
|
|
i < 0 && break
|
|
c[i]++
|
|
while (++i < k) {
|
|
c[i] = c[i-1]+1
|
|
}
|
|
}
|
|
|
|
return()
|
|
}
|
|
|
|
forcomb({|c| say c }, 5, 3)
|