<jupyter_start><jupyter_text>binarry limitsFor js1 << 32 === 1,but for python<jupyter_code>print(1 << 32)
print(len(str(1 << 32)))<jupyter_output>4294967296
10<jupyter_text>Converting to string (16-base)<jupyter_code>print(hex(2 ** 64 - 1))<jupyter_output>0xffffffffffffffff<jupyter_text>Why 10-base numbers are not convenient for processing in jsjs can't operate with big (more then 32bit) integers so we should split input in few parts but in case of 10-based number we would get significant intersection between big part and little<jupyter_code>print('Common 64-bit hash:\n5521297279245577514')
print()
print(f'in bits:\nb{5521297279245577514:064b}')
print()
print(f'10-base length: {math.log10(5521297279245577514)}')
big = 5521297279245577514 // 10**10 * 10**10
little = 5521297279245577514 % 10**10
print()
print('big part:')
print(f'{big:020} == \nb{big:064b}')
print()
print('small part:')
print(f'{little:020} == \nb{little:064b}')<jupyter_output>Common 64-bit hash:
5521297279245577514

in bits:
b0100110010011111100101101001111101010100110000110110110100101010

10-base length: 18.74204113117567

big part:
05521297270000000000 == 
b0100110010011111100101101001110100101101101011110001110000000000

small part:
00000000009245577514 == 
b0000000000000000000000000000001000100111000101000101000100101010
{'fraction_non_alphanumeric': 0.11280487804878049, 'fraction_numerical': 0.3307926829268293, 'mean_word_length': 8.583941605839415, 'pattern_counts': {'":': 0, '<': 16, '<?xml version=': 0, '>': 10, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 5, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '50911', 'license': 'MIT', 'n_tokens_mistral': 783, 'n_tokens_neox': 483, 'n_words': 100, 'path': 'binaries/limits.ipynb', 'repo_name': 'hyzhak/python-interview', 'size': '1312'}