24 lines
436 B
Awk
24 lines
436 B
Awk
function permute(l, k, i, s) {
|
|
if (k == length(l)) {
|
|
show(s)
|
|
return
|
|
}
|
|
for (i=k; i <= length(l); ++i) {
|
|
swap(l, i, k)
|
|
permute(l, k+1)
|
|
swap(l, k, i)
|
|
}
|
|
}
|
|
function swap(l, i, k, t) {
|
|
t = l[i]
|
|
l[i] = l[k]
|
|
l[k] = t
|
|
}
|
|
BEGIN {
|
|
n = 3 # default
|
|
if (ARGC > 1) n = ARGV[1] # number may be given as parameter
|
|
for (i=1; i <=n; ++i)
|
|
l[i] = i
|
|
permute(l, 1)
|
|
}
|