def rank(self, sub): """ Returns the rank of sub as a subset of s of size k. EXAMPLES:: sage: Subsets(3,2).rank([1,2]) 0 sage: Subsets([2,3,4],2).rank([3,4]) 2 sage: Subsets([2,3,4],2).rank([2]) Traceback (most recent call last): ... ValueError: {2} is not a subset of length 2 of {2, 3, 4} sage: Subsets([2,3,4],4).rank([2,3,4,5]) Traceback (most recent call last): ... ValueError: {2, 3, 4, 5} is not a subset of length 4 of {2, 3, 4} """ sub = Set(sub) n = self._s.cardinality() if self._k != sub.cardinality() or self._k > n: raise ValueError("{} is not a subset of length {} of {}".format( sub, self._k, self._s)) try: index_list = sorted(self._s.rank(x) for x in sub) except ValueError: raise ValueError("{} is not a subset of length {} of {}".format( sub, self._k, self._s)) return choose_nk.rank(index_list, n)
def rank(self, sub): """ Returns the rank of sub as a subset of s. EXAMPLES:: sage: Subsets(3).rank([]) 0 sage: Subsets(3).rank([1,2]) 4 sage: Subsets(3).rank([1,2,3]) 7 sage: Subsets(3).rank([2,3,4]) Traceback (most recent call last): ... ValueError: {2, 3, 4} is not a subset of {1, 2, 3} """ if sub not in Sets(): ssub = Set(sub) if len(sub) != len(ssub): raise ValueError("repeated elements in {}".format(sub)) sub = ssub try: index_list = sorted(self._s.rank(x) for x in sub) except (ValueError, IndexError): raise ValueError("{} is not a subset of {}".format( Set(sub), self._s)) n = self._s.cardinality() r = sum(binomial(n, i) for i in xrange(len(index_list))) return r + choose_nk.rank(index_list, n)
def rank(self, sub): """ Returns the rank of sub as a subset of s. EXAMPLES:: sage: Subsets(3).rank([]) 0 sage: Subsets(3).rank([1,2]) 4 sage: Subsets(3).rank([1,2,3]) 7 sage: Subsets(3).rank([2,3,4]) Traceback (most recent call last): ... ValueError: {2, 3, 4} is not a subset of {1, 2, 3} """ if sub not in Sets(): ssub = Set(sub) if len(sub) != len(ssub): raise ValueError("repeated elements in {}".format(sub)) sub = ssub try: index_list = sorted(self._s.rank(x) for x in sub) except (ValueError,IndexError): raise ValueError("{} is not a subset of {}".format( Set(sub), self._s)) n = self._s.cardinality() r = sum(binomial(n,i) for i in xrange(len(index_list))) return r + choose_nk.rank(index_list,n)
def rank(self, x): """ EXAMPLES:: sage: c = Combinations([1,2,3], 2) sage: range(c.cardinality()) == map(c.rank, c.list()) True """ x = map(self.mset.index, x) return rank(x, len(self.mset))
def rank(self, x): """ EXAMPLES:: sage: c = Combinations([1,2,3], 2) sage: range(c.cardinality()) == map(c.rank, c.list()) True """ x = [self.mset.index(_) for _ in x] return rank(x, len(self.mset))
def rank(self, x): """ EXAMPLES:: sage: c = Combinations([1,2,3]) sage: range(c.cardinality()) == map(c.rank, c) True """ x = map(self.mset.index, x) r = 0 n = len(self.mset) for i in range(len(x)): r += binomial(n, i) r += rank(x, n) return r
def rank(self, x): """ EXAMPLES:: sage: c = Combinations([1,2,3]) sage: range(c.cardinality()) == map(c.rank, c) True """ x = [self.mset.index(_) for _ in x] r = 0 n = len(self.mset) for i in range(len(x)): r += binomial(n, i) r += rank(x, n) return r