Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)