Написать функцию checkhash(seq, f, mod), которой на вход подаётся последовательность неравных друг другу (это гарантируется) хешируемых объектов, хеш-функция и число mod. Функция формирует новую редуцированную хеш-функцию r()=f()%mod, и собирает статистику коллизий по каждому значению r() на исходной последовательности. checkhash(seq, f, mod) возвращает кортеж из двух элементов — наибольшее и наименьшее количество произошедших коллизий.

Использование collections.Counter превращает эту задачку в простое упражнение.

from math import *
print(checkhash(range(-1000000,1000000,77),hash,128))
print(checkhash(range(-1000000,1000000,77),lambda x: int(f"{sin(x+1):14.13f}"[-5:]),128))

(204, 202)
(260, 112)


CategoryHomework

LecturesCMC/PythonIntro2019/Homework_CheckHash (последним исправлял пользователь FrBrGeorge 2019-11-23 18:23:42)