




"""simple docstring"""

def 						_snake_case     (					_snake_case							:					List[str]							)    ->					list:






      '''simple docstring'''


      if bit_count < 0:
            raise ValueError('The given input must be positive'							)

      # get the generated string sequence
      _A					   =   gray_code_sequence_string(__lowerCAmelCase							)
      #
      # convert them to integers
      for i in range(len(__lowerCAmelCase							)							):
            _A					   =   int(sequence[i]				,  2							)

      return sequence






def 						_snake_case     (					_snake_case							:					Union[str, Any]							)    ->					list:






      '''simple docstring'''


      if bit_count == 0:
            return ["0"]

      if bit_count == 1:
            return ["0", "1"]

      _A					   =   1 << bit_count  # defines the length of the sequence
      # 1<< n is equivalent to 2^n

      # recursive answer will generate answer for n-1 bits
      _A					   =   gray_code_sequence_string(bit_count - 1							)

      _A					   =   []

      # append 0 to first half of the smaller sequence generated
      for i in range(seq_len // 2							):
            _A					   =   "0" + smaller_sequence[i]
            sequence.append(__lowerCAmelCase							)

      # append 1 to second half ... start from the end of the list
      for i in reversed(range(seq_len // 2							)							):
            _A					   =   "1" + smaller_sequence[i]
            sequence.append(__lowerCAmelCase							)

      return sequence


if __name__ == "__main__":
       import doctest

       doctest.testmod()









def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase			) ->	int:
     while b:
          UpperCamelCase__				,     UpperCamelCase__			:   int       				=  b, a % b
     return a







def 		SCREAMING_SNAKE_CASE							(					__lowerCAmelCase					,    __lowerCAmelCase			) ->	int:
     return a if b == 0 else euclidean_gcd_recursive(__lowerCAmelCase					,    a % b			)







def 		SCREAMING_SNAKE_CASE							(					) ->	str:
     print(f'euclidean_gcd(3, 5) = {euclidean_gcd(3					,    5			)}'			)
     print(f'euclidean_gcd(5, 3) = {euclidean_gcd(5					,    3			)}'			)
     print(f'euclidean_gcd(1, 3) = {euclidean_gcd(1					,    3			)}'			)
     print(f'euclidean_gcd(3, 6) = {euclidean_gcd(3					,    6			)}'			)
     print(f'euclidean_gcd(6, 3) = {euclidean_gcd(6					,    3			)}'			)

     print(f'euclidean_gcd_recursive(3, 5) = {euclidean_gcd_recursive(3					,    5			)}'			)
     print(f'euclidean_gcd_recursive(5, 3) = {euclidean_gcd_recursive(5					,    3			)}'			)
     print(f'euclidean_gcd_recursive(1, 3) = {euclidean_gcd_recursive(1					,    3			)}'			)
     print(f'euclidean_gcd_recursive(3, 6) = {euclidean_gcd_recursive(3					,    6			)}'			)
     print(f'euclidean_gcd_recursive(6, 3) = {euclidean_gcd_recursive(6					,    3			)}'			)


if __name__ == "__main__":
 main()