RosettaCodeData/Task/Permutations/AWK/permutations-3.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)
}