Permutations/Rank of a permutation: Difference between revisions
→{{header|EasyLang}}
(Added Easylang) |
|||
Line 450:
=={{header|EasyLang}}==
<syntaxhighlight>
n = len a[]▼
if n = 0▼
return▼
.▼
k = n - 1▼
k -= 1▼
.▼
if k = 0▼
a[] = [ ]▼
l = n▼
while a[l] <= a[k]▼
l -= 1▼
swap a[k] a[n]▼
k += 1▼
n -= 1▼
.▼
func[] init n .
for i to n
Line 480 ⟶ 455:
.
return r[]
▲.
func fac n .▼
▲ .
return f▼
.
func[] getperm n r .
perm[] = init n
for i =
d = r div fa + 1
r = r mod fa
.
return
.
func getrank n p[] .
perm[] = init n
for i =
fa
for j = d to i - 1
perm[j] = perm[j + 1]
.
▲ until perm[] = [ ]
i += 1▼
.
return
.
proc show . .
Line 504 ⟶ 498:
h[] = getperm 3 i
print i & " -> " & h[] & " -> " & getrank 3 h[]
▲ .
print ""▼
r = random fac 12 - 1▼
write r & " -> "▼
print " -> " & getrank 12 h[]
.
.
show
▲func fac n .
▲ for i to n
▲ f *= i
▲ return f
▲print ""
▲ r = random fac 12 - 1
▲ write r & " -> "
▲ print getperm 12 r
</syntaxhighlight>
{{out}}
Line 530 ⟶ 519:
5 -> [ 2 1 0 ] -> 5
</pre>
|