Код Middle Рекомендательные системы обновлено
NDCG@k
Условие
Напишите ndcg_at_k(ranked, relevant, k): ranked это список id в порядке выдачи, relevant словарь «id → релевантность» (неотрицательные числа). DCG = Σ rel_i / log₂(i + 1) по позициям i = 1..k, IDCG это DCG идеального упорядочивания релевантностей. Верните NDCG, округлённый до 4 знаков; если IDCG = 0, верните 0.0.
Примеры
ndcg_at_k(["a", "b", "c"], {"a":1}, 3) // 1
ndcg_at_k(["b", "a", "c"], {"a":1}, 3) // 0.6309
ndcg_at_k(["x", "y"], {"a":1}, 2) // 0
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.