Permutations/Rank of a permutation: Difference between revisions
Content added Content deleted
(Added Easylang) |
|||
Line 450: | Line 450: | ||
=={{header|EasyLang}}== |
=={{header|EasyLang}}== |
||
<syntaxhighlight> |
<syntaxhighlight> |
||
proc nextperm . a[] . |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
while k >= 1 and a[k + 1] <= a[k] |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
return |
|||
. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
. |
|||
swap a[l] a[k] |
|||
k += 1 |
|||
while k < n |
|||
⚫ | |||
⚫ | |||
⚫ | |||
. |
|||
⚫ | |||
func[] init n . |
func[] init n . |
||
for i to n |
for i to n |
||
Line 480: | Line 455: | ||
. |
. |
||
return r[] |
return r[] |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
. |
. |
||
func[] getperm n r . |
func[] getperm n r . |
||
perm[] = init n |
perm[] = init n |
||
fa = fac n |
|||
for i = n downto 1 |
|||
⚫ | |||
d = r div fa + 1 |
|||
r = r mod fa |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
. |
. |
||
return |
return r[] |
||
. |
. |
||
func getrank n p[] . |
func getrank n p[] . |
||
perm[] = init n |
perm[] = init n |
||
fa = fac n |
|||
for i = n downto 1 |
|||
fa /= i |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
for j = d to i - 1 |
|||
perm[j] = perm[j + 1] |
|||
. |
. |
||
nextperm perm[] |
|||
⚫ | |||
⚫ | |||
. |
. |
||
return |
return r |
||
. |
. |
||
proc show . . |
proc show . . |
||
Line 504: | Line 498: | ||
h[] = getperm 3 i |
h[] = getperm 3 i |
||
print i & " -> " & h[] & " -> " & getrank 3 h[] |
print i & " -> " & h[] & " -> " & getrank 3 h[] |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
print " -> " & getrank 12 h[] |
|||
. |
. |
||
. |
. |
||
show |
show |
||
⚫ | |||
f = 1 |
|||
⚫ | |||
⚫ | |||
. |
|||
⚫ | |||
. |
|||
⚫ | |||
for i to 4 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
. |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
{{out}} |
{{out}} |
||
Line 530: | Line 519: | ||
5 -> [ 2 1 0 ] -> 5 |
5 -> [ 2 1 0 ] -> 5 |
||
381502760 -> [ 9 6 1 3 10 11 8 5 2 4 0 7 ] -> 381502760 |
|||
205815418 -> [ 5 1 9 2 7 4 10 6 3 11 0 8 ] -> 205815418 |
|||
229356067 -> [ 5 9 2 0 6 3 1 8 11 4 10 7 ] -> 229356067 |
|||
421960570 -> [ 10 6 2 9 3 4 5 0 7 11 1 8 ] -> 421960570 |
|||
</pre> |
</pre> |
||