Permutations: Difference between revisions
m
→{{header|Sidef}}: minor code improvements and fixes
m (elided redundant header in the task's preamble.) |
m (→{{header|Sidef}}: minor code improvements and fixes) |
||
Line 4,274:
=={{header|Sidef}}==
===Built-in
<lang ruby>[1,2,3].permutations { |
say
}</lang>
===Iterative
<lang ruby>func
var
loop {
callback(
var p =
while (idx[p-1] > idx[p]) {
p == 0 && return
var d = p
idx += idx.splice(p).reverse
while (idx[p-1] > idx[d]) {
idx
}
return()
}
▲permutations({|set| say set.join }, list);</lang>
===Recursive
<lang ruby>func permutations(callback, set, perm=[]) {
set.is_empty && callback(perm)
for i in ^set
__FUNC__(callback, [
set[(0 ..^ i)..., (i+1 ..^ set.len)...]
], [perm..., set[i]])
}
return()
}
▲permutations({|set| say set.join}, list);</lang>
{{out}}
<pre>
[0, 1, 2]
[0, 2, 1]
[1, 0, 2]
[1, 2, 0]
[2, 0, 1]
[2, 1, 0]
</pre>
|