


'''simple docstring'''




import unittest

from transformers import AlbertTokenizer, AlbertTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


__snake_case    						=get_tests_dir("""fixtures/spiece.model""")

@require_sentencepiece
@require_tokenizers
class 		UpperCAmelCase_      (  __lowercase       ,	unittest.TestCase		):
     lowerCamelCase				:	List[str]		=     AlbertTokenizer
     lowerCamelCase				:	Dict		=     AlbertTokenizerFast
     lowerCamelCase				:	Optional[Any]		=     True
     lowerCamelCase				:	Any		=     True
     lowerCamelCase				:	str		=     True





     def 							__UpperCAmelCase      ( self       :      int    )				->  int:
        super().setUp()

        # We have a SentencePiece fixture for testing
        lowerCAmelCase     =			AlbertTokenizer(UpperCAmelCase__    )
        tokenizer.save_pretrained(self.tmpdirname    )





     def 							__UpperCAmelCase      ( self       :      Union[str, Any]    ,      UpperCAmelCase__       :      List[str]    )				->  Union[str, Any]:
        lowerCAmelCase     =			'this is a test'
        lowerCAmelCase     =			'this is a test'
        return input_text, output_text





     def 							__UpperCAmelCase      ( self       :      List[str]    )				->  List[Any]:
        lowerCAmelCase     =			'<pad>'
        lowerCAmelCase     =			0

        self.assertEqual(self.get_tokenizer()._convert_token_to_id(UpperCAmelCase__    )    ,      UpperCAmelCase__    )
        self.assertEqual(self.get_tokenizer()._convert_id_to_token(UpperCAmelCase__    )    ,      UpperCAmelCase__    )





     def 							__UpperCAmelCase      ( self       :      Tuple    )				->  int:
        lowerCAmelCase     =			list(self.get_tokenizer().get_vocab().keys()    )

        self.assertEqual(vocab_keys[0]    ,      '<pad>'    )
        self.assertEqual(vocab_keys[1]    ,      '<unk>'    )
        self.assertEqual(vocab_keys[-1]    ,      '▁eloquent'    )
        self.assertEqual(len(UpperCAmelCase__    )    ,      3_0_0_0_0    )





     def 							__UpperCAmelCase      ( self       :      str    )				->  List[str]:
        self.assertEqual(self.get_tokenizer().vocab_size    ,      3_0_0_0_0    )





     def 							__UpperCAmelCase      ( self       :      Tuple    )				->  Union[str, Any]:
        if not self.test_rust_tokenizer:
           return

        lowerCAmelCase     =			self.get_tokenizer()
        lowerCAmelCase     =			self.get_rust_tokenizer()

        lowerCAmelCase     =			'I was born in 92000, and this is falsé.'

        lowerCAmelCase     =			tokenizer.tokenize(UpperCAmelCase__    )
        lowerCAmelCase     =			rust_tokenizer.tokenize(UpperCAmelCase__    )
        self.assertListEqual(UpperCAmelCase__    ,      UpperCAmelCase__    )

        lowerCAmelCase     =			tokenizer.encode(UpperCAmelCase__    ,      add_special_tokens=UpperCAmelCase__    )
        lowerCAmelCase     =			rust_tokenizer.encode(UpperCAmelCase__    ,      add_special_tokens=UpperCAmelCase__    )
        self.assertListEqual(UpperCAmelCase__    ,      UpperCAmelCase__    )

        lowerCAmelCase     =			self.get_rust_tokenizer()
        lowerCAmelCase     =			tokenizer.encode(UpperCAmelCase__    )
        lowerCAmelCase     =			rust_tokenizer.encode(UpperCAmelCase__    )
        self.assertListEqual(UpperCAmelCase__    ,      UpperCAmelCase__    )





     def 							__UpperCAmelCase      ( self       :      str    )				->  str:
        lowerCAmelCase     =			AlbertTokenizer(UpperCAmelCase__    ,      keep_accents=UpperCAmelCase__    )

        lowerCAmelCase     =			tokenizer.tokenize('This is a test'    )
        self.assertListEqual(UpperCAmelCase__    ,      ['▁this', '▁is', '▁a', '▁test']    )

        self.assertListEqual(tokenizer.convert_tokens_to_ids(UpperCAmelCase__    )    ,      [4_8, 2_5, 2_1, 1_2_8_9]    )

        lowerCAmelCase     =			tokenizer.tokenize('I was born in 92000, and this is falsé.'    )
        self.assertListEqual(
            UpperCAmelCase__    ,      ['▁i', '▁was', '▁born', '▁in', '▁9', '2000', ',', '▁and', '▁this', '▁is', '▁fal', 's', 'é', '.']    )
        lowerCAmelCase     =			tokenizer.convert_tokens_to_ids(UpperCAmelCase__    )
        self.assertListEqual(UpperCAmelCase__    ,      [3_1, 2_3, 3_8_6, 1_9, 5_6_1, 3_0_5_0, 1_5, 1_7, 4_8, 2_5, 8_2_5_6, 1_8, 1, 9]    )

        lowerCAmelCase     =			tokenizer.convert_ids_to_tokens(UpperCAmelCase__    )
        self.assertListEqual(
            UpperCAmelCase__    ,      ['▁i', '▁was', '▁born', '▁in', '▁9', '2000', ',', '▁and', '▁this', '▁is', '▁fal', 's', '<unk>', '.']    ,      )





     def 							__UpperCAmelCase      ( self       :      str    )				->  Tuple:
        lowerCAmelCase     =			AlbertTokenizer(UpperCAmelCase__    )

        lowerCAmelCase     =			tokenizer.encode('sequence builders'    )
        lowerCAmelCase     =			tokenizer.encode('multi-sequence build'    )

        lowerCAmelCase     =			tokenizer.build_inputs_with_special_tokens(UpperCAmelCase__    )
        lowerCAmelCase     =			tokenizer.build_inputs_with_special_tokens(UpperCAmelCase__    ,      UpperCAmelCase__    )

        assert encoded_sentence == [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id]
        assert encoded_pair == [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id] + text_a + [
            tokenizer.sep_token_id
        ]





     @slow
     def 							__UpperCAmelCase      ( self       :      Dict    )				->  int:
        # fmt: off
        lowerCAmelCase     =			{'attention_mask': [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'input_ids': [[2, 2_1_9_7_0, 1_3, 5, 6_0_9_2, 1_6_7, 2_8, 7_1_0_3, 2_1_5_3, 6_7_3, 8, 7_0_2_8, 1_2_0_5_1, 1_8, 1_7, 7_1_0_3, 2_1_5_3, 6_7_3, 8, 3_5_1_5, 1_8_6_8_4, 8, 4_4_6_1, 6, 1_9_2_7, 2_9_7, 8, 1_2_0_6_0, 2_6_0_7, 1_8, 1_3, 5, 4_4_6_1, 1_5, 1_0_5_3_8, 3_8, 8, 1_3_5, 1_5, 8_2_2, 5_8, 1_5, 9_9_3, 1_0_3_6_3, 1_5, 1_4_6_0, 8_0_0_5, 4_4_6_1, 1_5, 9_9_3, 2_5_5, 2_3_2_8, 9, 9, 9, 6, 2_6, 1_1_1_2, 8_1_6, 3_2_6_0, 1_3, 5, 1_0_3, 2_3_7_7, 6, 1_7, 1_1_1_2, 8_1_6, 2_7_8_2, 1_3, 5, 1_0_3, 1_0_6_4_1, 6, 2_9, 8_4, 2_5_1_2, 2_4_3_0, 7_8_2, 1_8_6_8_4, 2_7_6_1, 1_9, 8_0_8, 2_4_3_0, 2_5_5_6, 1_7, 8_5_5, 1_4_8_0, 9_4_7_7, 4_0_9_1, 1_2_8, 1_1_7_1_2, 1_5, 7_1_0_3, 2_1_5_3, 6_7_3, 1_7, 2_4_8_8_3, 9_9_9_0, 9, 3], [2, 1_1_5_0_2, 2_5, 1_0_0_6, 2_0, 7_8_2, 8, 1_1_8_0_9, 8_5_5, 1_7_3_2, 1_9_3_9_3, 1_8_6_6_7, 3_7, 3_6_7, 2_1_0_1_8, 6_9, 1_8_5_4, 3_4, 1_1_8_6_0, 1_9_1_2_4, 2_7, 1_5_6, 2_2_5, 1_7, 1_9_3, 4_1_4_1, 1_9, 6_5, 9_1_2_4, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [2, 1_4, 2_2_3_1, 8_8_6, 2_3_8_5, 1_7_6_5_9, 8_4, 1_4, 1_6_7_9_2, 1_9_5_2, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'token_type_ids': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
        # fmt: on

        self.tokenizer_integration_test_util(
            expected_encoding=UpperCAmelCase__    ,      model_name='albert-base-v2'    ,      revision='6b6560eaf5ff2e250b00c50f380c5389a9c2d82e'    ,      )








import os

# Precomputes a list of the 100 first triangular numbers
lowercase_       		=  [int(0.5 * n * (n + 1)) for n in range(1, 101)]
def 						_snake_case(    )							->      int:





    '''simple docstring'''






    A__          =   os.path.dirname(os.path.realpath(SCREAMING_SNAKE_CASE__      )      )
    A__          =   os.path.join(SCREAMING_SNAKE_CASE__    ,			'words.txt'      )

    A__          =   ''
    with open(SCREAMING_SNAKE_CASE__      ) as f:
        A__          =   f.readline()

    A__          =   [word.strip('"'      ) for word in words.strip('\r\n'      ).split(','      )]
    A__          =   [
        word
        for word in [sum(ord(SCREAMING_SNAKE_CASE__      ) - 64 for x in word      ) for word in words]
        if word in TRIANGULAR_NUMBERS
    ]
    return len(SCREAMING_SNAKE_CASE__      )


if __name__ == "__main__":
     print(solution())

