Permutations by swapping: Difference between revisions
Content added Content deleted
m (added whitespace before TOC.) |
m (→{{header|Sidef}}: minor code improvements) |
||
Line 1,711: | Line 1,711: | ||
=={{header|Sidef}}== |
=={{header|Sidef}}== |
||
{{trans|Perl}} |
{{trans|Perl}} |
||
<lang ruby>func perms( |
<lang ruby>func perms(n) { |
||
var perms = [[+1]] |
var perms = [[+1]] |
||
n.times { |x| |
|||
var sign = -1; |
var sign = -1; |
||
perms |
perms = gather { |
||
for s,*p in perms { |
|||
var r = |
var r = (0 .. p.len); |
||
(s < 0 ? r : r. |
take((s < 0 ? r : r.flip).map {|i| |
||
[sign *= -1, p |
[sign *= -1, p[0..i-1], x, p[i..p.end]] |
||
} |
}...) |
||
} |
|||
} |
} |
||
} |
} |
||
Line 1,727: | Line 1,728: | ||
var n = 4; |
var n = 4; |
||
perms(n) |
for p in perms(n) { |
||
var s = p.shift |
var s = p.shift |
||
s > 0 && (s = '+1') |
s > 0 && (s = '+1') |
||
say "#{p |
say "#{p} => #{s}" |
||
}</lang> |
}</lang> |
||