def unrank_gray(self, rank, superset): """ Gets the Gray code ordered subset of the specified rank. Examples: >>> from sympy.combinatorics.subsets import Subset >>> Subset.unrank_gray(4, ['a','b','c']).subset ['a', 'b'] >>> Subset.unrank_gray(0, ['a','b','c']).subset [] """ graycode_bitlist = GrayCode.unrank(len(superset), rank) return Subset.subset_from_bitlist(superset, graycode_bitlist)
def unrank_gray(self, rank, superset): """ Gets the Gray code ordered subset of the specified rank. Examples ======== >>> from sympy.combinatorics.subsets import Subset >>> Subset.unrank_gray(4, ['a','b','c']).subset ['a', 'b'] >>> Subset.unrank_gray(0, ['a','b','c']).subset [] """ graycode_bitlist = GrayCode.unrank(len(superset), rank) return Subset.subset_from_bitlist(superset, graycode_bitlist)
def iterate_graycode(self, k): """ Helper function used for prev_gray and next_gray. It performs k step overs to get the respective Gray codes. Examples: >>> from sympy.combinatorics.subsets import Subset >>> a = Subset([1,2,3], [1,2,3,4]) >>> a.iterate_graycode(3).subset [1, 4] >>> a.iterate_graycode(-2).subset [1, 2, 4] """ unranked_code = GrayCode.unrank(self.superset_size, (self.rank_gray + k) % self.cardinality) return Subset.subset_from_bitlist(self.superset, unranked_code)
def iterate_graycode(self, k): """ Helper function used for prev_gray and next_gray. It performs k step overs to get the respective Gray codes. Examples ======== >>> from sympy.combinatorics.subsets import Subset >>> a = Subset([1,2,3], [1,2,3,4]) >>> a.iterate_graycode(3).subset [1, 4] >>> a.iterate_graycode(-2).subset [1, 2, 4] """ unranked_code = GrayCode.unrank( self.superset_size, (self.rank_gray + k) % self.cardinality) return Subset.subset_from_bitlist(self.superset, unranked_code)