Data update
This commit is contained in:
parent
8e4e15fa56
commit
72eb4943cb
1853 changed files with 35514 additions and 9441 deletions
33
Task/Permutations/AWK/permutations-2.awk
Normal file
33
Task/Permutations/AWK/permutations-2.awk
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# determine and print all permutations of numbers 1..n
|
||||
|
||||
# General variant: simple, single array, recursive, not in lexical order
|
||||
#
|
||||
# An array with n places is used, marked by 0 as free.
|
||||
# The current element l replaces the free places one by one,
|
||||
# and the next element l+1 is probed recursively with the array.
|
||||
#
|
||||
function permute1(l, n, r, i) {
|
||||
if ( l <= n) {
|
||||
for (i=1; i<=n; ++i) {
|
||||
if (r[i] == 0) {
|
||||
r[i] = l
|
||||
permute1(l+1, n, r)
|
||||
r[i] = 0
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
# print result; consumes ca. 50% of CPU time
|
||||
s = ""
|
||||
for (i=1; i <= length(r); ++i) # ensure order
|
||||
s = s r[i] " "
|
||||
print s
|
||||
}
|
||||
|
||||
# command line parameter is number of elements.
|
||||
BEGIN {
|
||||
n = 3 # default
|
||||
if (ARGC > 1) n = ARGV[1] # number may be given as parameter
|
||||
for (i=1; i <=n; ++i) r[i] = 0 # fill with zeroes
|
||||
permute1(1, n, r)
|
||||
}
|
||||
23
Task/Permutations/AWK/permutations-3.awk
Normal file
23
Task/Permutations/AWK/permutations-3.awk
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
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)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue