





import argparse
import logging
import pickle
from collections import Counter


logging.basicConfig(
    format="""%(asctime)s - %(levelname)s - %(name)s - %(message)s""", datefmt="""%m/%d/%Y %H:%M:%S""", level=logging.INFO
)
SCREAMING_SNAKE_CASE_						   =       logging.getLogger(__name__)

if __name__ == "__main__":
      SCREAMING_SNAKE_CASE_						   =       argparse.ArgumentParser(
          description="""Token Counts for smoothing the masking probabilities in MLM (cf XLM/word2vec)"""
      )
      parser.add_argument(
          """--data_file""", type=str, default="""data/dump.bert-base-uncased.pickle""", help="""The binarized dataset."""
      )
      parser.add_argument(
          """--token_counts_dump""", type=str, default="""data/token_counts.bert-base-uncased.pickle""", help="""The dump file."""
      )
      parser.add_argument("""--vocab_size""", default=3_0_5_2_2, type=int)
      SCREAMING_SNAKE_CASE_						   =       parser.parse_args()

      logger.info(F'''Loading data from {args.data_file}''')
      with open(args.data_file, """rb""") as fp:
            SCREAMING_SNAKE_CASE_						   =       pickle.load(fp)

      logger.info("""Counting occurrences for MLM.""")
      SCREAMING_SNAKE_CASE_						   =       Counter()
      for tk_ids in data:
            counter.update(tk_ids)
      SCREAMING_SNAKE_CASE_						   =       [0] * args.vocab_size
      for k, v in counter.items():
            SCREAMING_SNAKE_CASE_						   =       v

      logger.info(F'''Dump to {args.token_counts_dump}''')
      with open(args.token_counts_dump, """wb""") as handle:
            pickle.dump(counts, handle, protocol=pickle.HIGHEST_PROTOCOL)





"""simple docstring"""





from collections import defaultdict
from math import ceil, sqrt

def   __SCREAMING_SNAKE_CASE  (      A_ = 1_00_00_00						,     A_ = 10 ):
	lowerCAmelCase__	:						defaultdict  				=	defaultdict(A_ )

	for outer_width in range(3						,     (t_limit // 4) + 2 ):
		if outer_width * outer_width > t_limit:
			lowerCAmelCase__	:						int  				=	max(
			    ceil(sqrt(outer_width * outer_width - t_limit ) )						,     1 )
		else:
			lowerCAmelCase__	:						Tuple  				=	1

		hole_width_lower_bound += (outer_width - hole_width_lower_bound) % 2

		for hole_width in range(A_						,     outer_width - 1						,     2 ):
			count[outer_width * outer_width - hole_width * hole_width] += 1

	return sum(1 for n in count.values() if 1 <= n <= 10 )


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




