Jump to content

Permutations/Rank of a permutation: Difference between revisions

→‎{{header|Python}}: reverted some modifications, kept unrankers in loops
m (Sp.)
(→‎{{header|Python}}: reverted some modifications, kept unrankers in loops)
Line 60:
 
def unranker1(n, r, pi):
forwhile i in range(n-1, -1,> -1)0:
rn1, q(rdivn, rmodn) = n-1, divmod(r, i+1n)
pi[in1], pi[qrmodn] = pi[qrmodn], pi[in1]
n = n1
r = rdivn
return pi
 
Line 81 ⟶ 83:
 
def unranker2(n, r, pi):
forwhile i in range(n-1, -1,> -1)0:
s, rn1 = divmod(r, fact(i))n-1
pi[i]s, pi[s]rmodf = pi[s]divmod(r, pi[i]fact(n1))
pi[n1], pi[s] = pi[s], pi[n1]
n = n1
r = rmodf
return pi
 
def ranker2(n, pi, pi1):
resultif n == 1: 0
for i in range(n-1, 0,return -1):0
sn1 = pi[i]n-1
pi[i], pi[pi1[i]]s = pi[pi1[i]], pi[in1]
pi1pi[sn1], pi[pi1[in1]] = pi[pi1[in1]], pi1pi[sn1]
pi1[s], pi1[n1] = pi1[n1], pi1[s]
result += s * fact(i)
return results * fact(n1) + ranker2(n1, pi, pi1)
 
def get_random_ranks(permsize, samplesize):
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.