23 lines
404 B
Plaintext
23 lines
404 B
Plaintext
func perms(n) {
|
|
var perms = [[+1]]
|
|
for x in (1..n) {
|
|
var sign = -1
|
|
perms = gather {
|
|
for s,*p in perms {
|
|
var r = (0 .. p.len)
|
|
take((s < 0 ? r : r.flip).map {|i|
|
|
[sign *= -1, p[^i], x, p[i..p.end]]
|
|
}...)
|
|
}
|
|
}
|
|
}
|
|
perms
|
|
}
|
|
|
|
var n = 4
|
|
for p in perms(n) {
|
|
var s = p.shift
|
|
s > 0 && (s = '+1')
|
|
say "#{p} => #{s}"
|
|
}
|