def unrank(self, r): """ Returns the subset of s that has rank k. EXAMPLES:: sage: Subsets(3,2).unrank(0) {1, 2} sage: Subsets([2,4,5],2).unrank(0) {2, 4} """ lset = __builtin__.list(self.s) n = len(lset) if self.k not in range(len(self.s) + 1): return None elif r >= self.cardinality() or r < 0: return None else: return Set([lset[i] for i in choose_nk.from_rank(r, n, self.k)])
def unrank(self, r): """ Returns the subset of s that has rank k. EXAMPLES:: sage: Subsets(3,2).unrank(0) {1, 2} sage: Subsets([2,4,5],2).unrank(0) {2, 4} """ lset = __builtin__.list(self.s) n = len(lset) if self.k not in range(len(self.s)+1): return None elif r >= self.cardinality() or r < 0: return None else: return Set([lset[i] for i in choose_nk.from_rank(r, n, self.k)])
def unrank(self, r): """ Returns the subset of s that has rank k. EXAMPLES:: sage: Subsets(3).unrank(0) {} sage: Subsets([2,4,5]).unrank(1) {2} """ lset = __builtin__.list(self.s) n = len(lset) if r >= self.cardinality() or r < 0: return None else: for k in range(n + 1): bin = binomial(n, k) if r >= bin: r = r - bin else: return Set([lset[i] for i in choose_nk.from_rank(r, n, k)])
def unrank(self, r): """ Returns the subset of s that has rank k. EXAMPLES:: sage: Subsets(3).unrank(0) {} sage: Subsets([2,4,5]).unrank(1) {2} """ lset = __builtin__.list(self.s) n = len(lset) if r >= self.cardinality() or r < 0: return None else: for k in range(n+1): bin = binomial(n,k) if r >= bin: r = r - bin else: return Set([lset[i] for i in choose_nk.from_rank(r, n, k)])