Код Junior Kafka обновлено
Распределение ключей по партициям
Условие
Продюсер выбирает партицию как crc32(ключ в UTF-8) % число_партиций (используйте zlib.crc32; настоящий Kafka использует murmur2, но идея та же). Напишите partition_stats(keys, partitions): верните {"assign": {ключ: партиция} для уникальных ключей, "load": [число сообщений в партиции 0, 1, ...]}, где keys поток ключей сообщений (с повторами), а load считает каждое сообщение.
Примеры
partition_stats(["user-1"], 4) // {"assign":{"user-1":0},"load":[1,0,0,0]}
partition_stats([], 3) // {"assign":{},"load":[0,0,0]}
partition_stats(["a", "a", "a", "b"], 2) // {"assign":{"a":1,"b":1},"load":[0,4]}
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.