(self)
return rank
Returns the lexicographic rank of the permutation.

        Examples
        ========

        >>> from sympy.combinatorics.permutations import Permutation
        >>> p = Permutation([0, 1, 2, 3])
        >>> p.rank()
        0
        >>> p = Permutation([3, 2, 1, 0])
        >>> p.rank()
        23

        See Also
        ========

        next_lex, unrank_lex, cardinality, length, order, size
Returns the lexicographic rank of the permutation.
Returns the lexicographic rank of the permutation .
def rank(self):
        """
        Returns the lexicographic rank of the permutation.

        Examples
        ========

        >>> from sympy.combinatorics.permutations import Permutation
        >>> p = Permutation([0, 1, 2, 3])
        >>> p.rank()
        0
        >>> p = Permutation([3, 2, 1, 0])
        >>> p.rank()
        23

        See Also
        ========

        next_lex, unrank_lex, cardinality, length, order, size
        """
        if not self._rank is None:
            return self._rank
        rank = 0
        rho = self.array_form[:]
        n = self.size - 1
        size = n + 1
        psize = int(ifac(n))
        for j in range(size - 1):
            rank += rho[j]*psize
            for i in range(j + 1, size):
                if rho[i] > rho[j]:
                    rho[i] -= 1
            psize //= n
            n -= 1
        self._rank = rank
        return rank
def rank ( self ) : if not self . _rank is None : return self . _rank rank = 0 rho = self . array_form [ : ] n = self . size - 1 size = n + 1 psize = int ( ifac ( n ) ) for j in range ( size - 1 ) : rank += rho [ j ] * psize for i in range ( j + 1 , size ) : if rho [ i ] > rho [ j ] : rho [ i ] -= 1 psize //= n n -= 1 self . _rank = rank return rank