Форум сайта python.su
Добрый день!
Столкнулся с задачей по реализации фильтра Блума.
Реализуйте классический фильтр Блюма для строк на основе битового массива (не массива из байтов или булевых значений).
Для тестового примера можно использовать и обычное 32-разрядное целое число: принимаем размер фильтра m=32. Примем количество значений для фильтра n=10, и получим примерное количество хэш-функций k=2.
Не используйте в вашем решении никакие стандартные библиотеки для работы с битовыми массивами.
Основная проблема в том, что я не понимаю, как создать сам битовый массив (без использования сторонних библиотек типа bitarray)
Буду благодарен за помощь.
Офлайн
anton_krupinпомотреть как это сделано у других:
Основная проблема в том, что я не понимаю, как создать сам битовый массив (без использования сторонних библиотек типа bitarray)
[code python][/code]
Отредактировано PEHDOM (Апрель 9, 2021 14:06:35)
Офлайн
anton_krupinБитовый массив создаётся в целом числе. Целое число представляет из себя массив битов.
Основная проблема в том, что я не понимаю, как создать сам битовый массив
>>> array = 0 >>> array 0 >>> array |= 1 >>> array 1 >>> array |= 2 >>> array 3 >>> bin(array) '0b11' >>> '{:010b}'.format(array) '0000000011' >>> array |= 4 >>> '{:010b}'.format(array) '0000000111' >>> array 7 >>> array |= 8 >>> '{:010b}'.format(array) '0000001111' >>> array 15 >>> array |= 16 >>> '{:010b}'.format(array) '0000011111' >>> array 31 >>>
Отредактировано py.user.next (Апрель 9, 2021 23:53:24)
Офлайн