




"""simple docstring"""






import re
import string

import numpy as np

import datasets


lowercase__     						=						'\nReturns the rate at which the input predicted strings exactly match their references, ignoring any strings input as part of the regexes_to_ignore list.\n'

lowercase__     						=						'\nArgs:\n    predictions: List of predicted texts.\n    references: List of reference texts.\n    regexes_to_ignore: List, defaults to None. Regex expressions of characters to\n        ignore when calculating the exact matches. Note: these regexes are removed\n        from the input data before the changes based on the options below (e.g. ignore_case,\n        ignore_punctuation, ignore_numbers) are applied.\n    ignore_case: Boolean, defaults to False. If true, turns everything\n        to lowercase so that capitalization differences are ignored.\n    ignore_punctuation: Boolean, defaults to False. If true, removes all punctuation before\n        comparing predictions and references.\n    ignore_numbers: Boolean, defaults to False. If true, removes all punctuation before\n        comparing predictions and references.\nReturns:\n    exact_match: Dictionary containing exact_match rate. Possible values are between 0.0 and 100.0, inclusive.\nExamples:\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["the cat", "theater", "YELLING", "agent007"]\n    >>> preds = ["cat?", "theater", "yelling", "agent"]\n    >>> results = exact_match.compute(references=refs, predictions=preds)\n    >>> print(round(results["exact_match"], 1))\n    25.0\n\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["the cat", "theater", "YELLING", "agent007"]\n    >>> preds = ["cat?", "theater", "yelling", "agent"]\n    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell"], ignore_case=True, ignore_punctuation=True)\n    >>> print(round(results["exact_match"], 1))\n    50.0\n\n\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["the cat", "theater", "YELLING", "agent007"]\n    >>> preds = ["cat?", "theater", "yelling", "agent"]\n    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell", "YELL"], ignore_case=True, ignore_punctuation=True)\n    >>> print(round(results["exact_match"], 1))\n    75.0\n\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["the cat", "theater", "YELLING", "agent007"]\n    >>> preds = ["cat?", "theater", "yelling", "agent"]\n    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell", "YELL"], ignore_case=True, ignore_punctuation=True, ignore_numbers=True)\n    >>> print(round(results["exact_match"], 1))\n    100.0\n\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["The cat sat on the mat.", "Theaters are great.", "It\'s like comparing oranges and apples."]\n    >>> preds = ["The cat sat on the mat?", "Theaters are great.", "It\'s like comparing apples and oranges."]\n    >>> results = exact_match.compute(references=refs, predictions=preds)\n    >>> print(round(results["exact_match"], 1))\n    33.3\n\n'

lowercase__     						=						'\n'






@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION,	_KWARGS_DESCRIPTION						)
class lowerCAmelCase__	(     datasets.Metric						):






			'''simple docstring'''



			def 					A_    (  self  ):
							return datasets.MetricInfo(
							    description=_DESCRIPTION  ,      citation=_CITATION  ,      inputs_description=_KWARGS_DESCRIPTION  ,      features=datasets.Features(
							        {
							            'predictions': datasets.Value('string'  ,      id='sequence'  ),
							            'references': datasets.Value('string'  ,      id='sequence'  ),
							        }  )  ,      reference_urls=[]  ,      )






			def 					A_    (  self  ,      lowercase  ,      lowercase  ,      lowercase=None  ,      lowercase=False  ,      lowercase=False  ,      lowercase=False  ,      ):
							if regexes_to_ignore is not None:
											for s in regexes_to_ignore:
															_lowerCamelCase     :			Dict    =    np.array([re.sub(UpperCamelCase__  ,      ''  ,      UpperCamelCase__  ) for x in predictions]  )
															_lowerCamelCase     :			Any    =    np.array([re.sub(UpperCamelCase__  ,      ''  ,      UpperCamelCase__  ) for x in references]  )
							else:
											_lowerCamelCase     :			List[Any]    =    np.asarray(UpperCamelCase__  )
											_lowerCamelCase     :			Union[str, Any]    =    np.asarray(UpperCamelCase__  )

							if ignore_case:
											_lowerCamelCase     :			str    =    np.char.lower(UpperCamelCase__  )
											_lowerCamelCase     :			Optional[Any]    =    np.char.lower(UpperCamelCase__  )

							if ignore_punctuation:
											_lowerCamelCase     :			Union[str, Any]    =    string.punctuation.maketrans(''  ,      ''  ,      string.punctuation  )
											_lowerCamelCase     :			List[str]    =    np.char.translate(UpperCamelCase__  ,      table=UpperCamelCase__  )
											_lowerCamelCase     :			Any    =    np.char.translate(UpperCamelCase__  ,      table=UpperCamelCase__  )

							if ignore_numbers:
											_lowerCamelCase     :			Union[str, Any]    =    string.digits.maketrans(''  ,      ''  ,      string.digits  )
											_lowerCamelCase     :			Optional[int]    =    np.char.translate(UpperCamelCase__  ,      table=UpperCamelCase__  )
											_lowerCamelCase     :			str    =    np.char.translate(UpperCamelCase__  ,      table=UpperCamelCase__  )

							_lowerCamelCase     :			Optional[int]    =    predictions == references

							return {"exact_match": np.mean(UpperCamelCase__  ) * 100}





from math import sqrt

def      A      (      _SCREAMING_SNAKE_CASE = 100_0000    )	-> int:
       lowerCamelCase   :      int			 =					0
       lowerCamelCase   :      int			 =					0
       lowerCamelCase   :      int

       while num_cuboids <= limit:
              max_cuboid_size += 1
              for sum_shortest_sides in range(2 ,2 * max_cuboid_size + 1    ):
                     if sqrt(sum_shortest_sides**2 + max_cuboid_size**2    ).is_integer():
                            num_cuboids += (
                                min(_SCREAMING_SNAKE_CASE ,sum_shortest_sides // 2    )
                                - max(1 ,sum_shortest_sides - max_cuboid_size    )
                                + 1
                            )

       return max_cuboid_size


if __name__ == "__main__":
       print(f'''{solution() = }''')






