






def       snake_case_		(     lowerCAmelCase_       :						int      ):
							if upper_limit < 0:
														raise ValueError("""Limit for the Catalan sequence must be ≥ 0"""      )

							__lowercase      :							List[str]				=     [0] * (upper_limit + 1)

							# Base case: C(0) = C(1) = 1
							__lowercase      :							Tuple				=     1
							if upper_limit > 0:
														__lowercase      :							Dict				=     1

							# Recurrence relation: C(i) = sum(C(j).C(i-j-1)), from j = 0 to i
							for i in range(2       ,       upper_limit + 1      ):
														for j in range(lowerCAmelCase_      ):
																					catalan_list[i] += catalan_list[j] * catalan_list[i - j - 1]

							return catalan_list


if __name__ == "__main__":
	print('''\n********* Catalan Numbers Using Dynamic Programming ************\n''')
	print('''\n*** Enter -1 at any time to quit ***''')
	print('''\nEnter the upper limit (≥ 0) for the Catalan number sequence: ''', end='''''')
	try:
		while True:
			lowerCamelCase : Dict						   =       int(input().strip())
			if N < 0:
				print('''\n********* Goodbye!! ************''')
				break
			else:
				print(f'''The Catalan numbers from 0 through {N} are:''')
				print(catalan_numbers(N))
				print('''Try another upper limit for the sequence: ''', end='''''')
	except (NameError, ValueError):
		print('''\n********* Invalid input, goodbye! ************\n''')

	import doctest

	doctest.testmod()







# Copyright 2021 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import os

from accelerate.utils import ComputeEnvironment

from .cluster import get_cluster_input
from .config_args import cache_dir, default_config_file, default_yaml_config_file, load_config_from_file  # noqa: F401
from .config_utils import _ask_field, _ask_options, _convert_compute_environment  # noqa: F401
from .sagemaker import get_sagemaker_input


lowerCamelCase : int						   =       '''Launches a series of prompts to create and save a `default_config.yaml` configuration file for your training system. Should always be ran first on your machine'''
def       snake_case_		(     ):
							__lowercase      :							List[Any]				=     _ask_options(
							    """In which compute environment are you running?"""       ,       ["""This machine""", """AWS (Amazon SageMaker)"""]       ,       _convert_compute_environment       ,       )
							if compute_environment == ComputeEnvironment.AMAZON_SAGEMAKER:
														__lowercase      :							Union[str, Any]				=     get_sagemaker_input()
							else:
														__lowercase      :							str				=     get_cluster_input()
							return config
def       snake_case_		(     lowerCAmelCase_       :						List[str]=None      ):
							if subparsers is not None:
														__lowercase      :							Optional[int]				=     subparsers.add_parser("""config"""       ,       description=lowerCAmelCase_      )
							else:
														__lowercase      :							List[str]				=     argparse.ArgumentParser("""Accelerate config command"""       ,       description=lowerCAmelCase_      )

							parser.add_argument(
							    """--config_file"""       ,       default=lowerCAmelCase_       ,       help=(
							        """The path to use to store the config file. Will default to a file named default_config.yaml in the cache """
							        """location, which is the content of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have """
							        """such an environment variable, your cache directory ('~/.cache' or the content of `XDG_CACHE_HOME`) suffixed """
							        """with 'huggingface'."""
							    )       ,       )

							if subparsers is not None:
														parser.set_defaults(func=lowerCAmelCase_      )
							return parser
def       snake_case_		(     lowerCAmelCase_       :						Tuple      ):
							__lowercase      :							Union[str, Any]				=     get_user_input()
							if args.config_file is not None:
														__lowercase      :							List[Any]				=     args.config_file
							else:
														if not os.path.isdir(lowerCAmelCase_      ):
																					os.makedirs(lowerCAmelCase_      )
														__lowercase      :							Any				=     default_yaml_config_file

							if config_file.endswith(""".json"""      ):
														config.to_json_file(lowerCAmelCase_      )
							else:
														config.to_yaml_file(lowerCAmelCase_      )
							print(F"accelerate configuration saved at {config_file}"      )
def       snake_case_		(     ):
							__lowercase      :							str				=     config_command_parser()
							__lowercase      :							str				=     parser.parse_args()
							config_command(lowerCAmelCase_      )


if __name__ == "__main__":
	main()