'''simple docstring'''





import numpy as np
from scipy.spatial.distance import cdist
from sklearn.metrics import fa_score

import datasets


SCREAMING_SNAKE_CASE_:     List[str]  ='\\n    @inproceedings{kakwani2020indicnlpsuite,\n    title={{IndicNLPSuite: Monolingual Corpora, Evaluation Benchmarks and Pre-trained Multilingual Language Models for Indian Languages}},\n    author={Divyanshu Kakwani and Anoop Kunchukuttan and Satish Golla and Gokul N.C. and Avik Bhattacharyya and Mitesh M. Khapra and Pratyush Kumar},\n    year={2020},\n    booktitle={Findings of EMNLP},\n}\n'

SCREAMING_SNAKE_CASE_:     Optional[Any]  ='\\n    IndicGLUE is a natural language understanding benchmark for Indian languages. It contains a wide\n    variety of tasks and covers 11 major Indian languages - as, bn, gu, hi, kn, ml, mr, or, pa, ta, te.\n'

SCREAMING_SNAKE_CASE_:     Optional[Any]  ='\nCompute IndicGLUE evaluation metric associated to each IndicGLUE dataset.\nArgs:\n    predictions: list of predictions to score (as int64),\n        except for \'cvit-mkb-clsr\' where each prediction is a vector (of float32).\n    references: list of ground truth labels corresponding to the predictions (as int64),\n        except for \'cvit-mkb-clsr\' where each reference is a vector (of float32).\nReturns: depending on the IndicGLUE subset, one or several of:\n    "accuracy": Accuracy\n    "f1": F1 score\n    "precision": Precision@10\nExamples:\n\n    >>> indic_glue_metric = datasets.load_metric(\'indic_glue\', \'wnli\')  # \'wnli\' or any of ["copa", "sna", "csqa", "wstp", "inltkh", "bbca", "iitp-mr", "iitp-pr", "actsa-sc", "md"]\n    >>> references = [0, 1]\n    >>> predictions = [0, 1]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {\'accuracy\': 1.0}\n\n    >>> indic_glue_metric = datasets.load_metric(\'indic_glue\', \'wiki-ner\')\n    >>> references = [0, 1]\n    >>> predictions = [0, 1]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {\'accuracy\': 1.0, \'f1\': 1.0}\n\n    >>> indic_glue_metric = datasets.load_metric(\'indic_glue\', \'cvit-mkb-clsr\')\n    >>> references = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]\n    >>> predictions = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {\'precision@10\': 1.0}\n\n'





def 	lowerCAmelCase_				(					snake_case_       : Optional[Any]					,    snake_case_       : List[str]			)    ->      str:


     '''simple docstring'''




     return float((preds == labels).mean()			)





def 	lowerCAmelCase_				(					snake_case_       : int					,    snake_case_       : Dict			)    ->      int:


     '''simple docstring'''




     UpperCAmelCase_           =   simple_accuracy(snake_case_					,    snake_case_			)
     UpperCAmelCase_           =   float(fa_score(y_true=snake_case_					,    y_pred=snake_case_			)			)
     return {
         "accuracy": acc,
         "f1": fa,
     }





def 	lowerCAmelCase_				(					snake_case_       : List[Any]					,    snake_case_       : str			)    ->      Optional[Any]:


     '''simple docstring'''




     UpperCAmelCase_           =   np.array(snake_case_			)
     UpperCAmelCase_           =   np.array(snake_case_			)
     UpperCAmelCase_           =   en_sentvecs.shape[0]

     # mean centering
     UpperCAmelCase_           =   en_sentvecs - np.mean(snake_case_					,    axis=0			)
     UpperCAmelCase_           =   in_sentvecs - np.mean(snake_case_					,    axis=0			)

     UpperCAmelCase_           =   cdist(snake_case_					,    snake_case_					,    "cosine"			)
     UpperCAmelCase_           =   np.array(range(snake_case_			)			)
     UpperCAmelCase_           =   sim.argsort(axis=1			)[:, :10]
     UpperCAmelCase_           =   np.any(preds == actual[:, None]					,    axis=1			)
     return float(matches.mean()			)






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



    def 					_lowercase						(self    :    List[str] ):
         if self.config_name not in [
             "wnli",
             "copa",
             "sna",
             "csqa",
             "wstp",
             "inltkh",
             "bbca",
             "cvit-mkb-clsr",
             "iitp-mr",
             "iitp-pr",
             "actsa-sc",
             "md",
             "wiki-ner",
         ]:
              raise KeyError(
                  "You should supply a configuration name selected in "
                  "[\"wnli\", \"copa\", \"sna\", \"csqa\", \"wstp\", \"inltkh\", \"bbca\", "
                  "\"cvit-mkb-clsr\", \"iitp-mr\", \"iitp-pr\", \"actsa-sc\", \"md\", "
                  "\"wiki-ner\"]" )
         return datasets.MetricInfo(
             description=_DESCRIPTION   ,			citation=_CITATION   ,			inputs_description=_KWARGS_DESCRIPTION   ,			features=datasets.Features(
                 {
                     "predictions": datasets.Value("int64" )
                     if self.config_name != "cvit-mkb-clsr"
                     else datasets.Sequence(datasets.Value("float32" ) ),
                     "references": datasets.Value("int64" )
                     if self.config_name != "cvit-mkb-clsr"
                     else datasets.Sequence(datasets.Value("float32" ) ),
                 } )   ,			codebase_urls=[]   ,			reference_urls=[]   ,			format="numpy" if self.config_name != "cvit-mkb-clsr" else None   ,			)






    def 					_lowercase						(self    :    Tuple   ,			__a    :    Any   ,			__a    :    Union[str, Any] ):
         if self.config_name == "cvit-mkb-clsr":
              return {"precision@10": precision_at_aa(__a   ,			__a )}
         elif self.config_name in ["wiki-ner"]:
              return acc_and_fa(__a   ,			__a )
         elif self.config_name in [
             "wnli",
             "copa",
             "sna",
             "csqa",
             "wstp",
             "inltkh",
             "bbca",
             "iitp-mr",
             "iitp-pr",
             "actsa-sc",
             "md",
         ]:
              return {"accuracy": simple_accuracy(__a   ,			__a )}
         else:
              raise KeyError(
                  "You should supply a configuration name selected in "
                  "[\"wnli\", \"copa\", \"sna\", \"csqa\", \"wstp\", \"inltkh\", \"bbca\", "
                  "\"cvit-mkb-clsr\", \"iitp-mr\", \"iitp-pr\", \"actsa-sc\", \"md\", "
                  "\"wiki-ner\"]" )





'''simple docstring'''





def 	lowerCAmelCase_				(					snake_case_       : int					,    snake_case_       : int			)    ->      int:


     '''simple docstring'''




     return x if y == 0 else greatest_common_divisor(snake_case_					,    x % y			)





def 	lowerCAmelCase_				(					snake_case_       : int					,    snake_case_       : int			)    ->      int:


     '''simple docstring'''




     return (x * y) // greatest_common_divisor(snake_case_					,    snake_case_			)





def 	lowerCAmelCase_				(					snake_case_       : int = 20			)    ->      int:


     '''simple docstring'''




     UpperCAmelCase_           =   1
     for i in range(1					,    n + 1			):
          UpperCAmelCase_           =   lcm(snake_case_					,    snake_case_			)
     return g


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




