Код Middle Рекомендательные системы обновлено

Похожие товары по совместным покупкам

Условие

Даны корзины пользователей baskets (списки id товаров). Напишите similar_items(baskets, item, k): косинусная близость товара item с остальными по бинарным векторам «пользователь купил товар»: |U_a ∩ U_b| / √(|U_a|·|U_b|). Верните топ-k пар [id, близость] по убыванию близости (при равенстве по id), близость округлите до 4 знаков, товары с нулевой близостью не включайте.

Примеры

similar_items([["хлеб", "молоко"], ["хлеб", "масло"], ["молоко", "масло", "хлеб"], ["сок"]], "хлеб", 2) // [["масло", 0.8165], ["молоко", 0.8165]]
similar_items([["a", "b"], ["a"], ["c"]], "c", 3) // []
similar_items([["a", "b"], ["a", "b"], ["b", "c"]], "a", 5) // [["b", 0.8165]]

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.