RosettaCodeData/Task/Permutations/Sidef/permutations-2.sidef

22 lines
342 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
func forperm(callback, n) {
var idx = @^n
loop {
2023-12-16 21:33:55 -08:00
callback(idx...)
2023-07-01 11:58:00 -04:00
var p = n-1
while (idx[p-1] > idx[p]) {--p}
p == 0 && return()
var d = p
idx += idx.splice(p).reverse
while (idx[p-1] > idx[d]) {++d}
idx.swap(p-1, d)
}
return()
}
2023-12-16 21:33:55 -08:00
forperm({|*p| say p }, 3)