Код Middle RAG спрашивают часто обновлено

Reciprocal rank fusion

Условие

Напишите rrf(rankings, k=60): rankings это список выдач, каждая выдача список id документов от лучшего к худшему. Оценка документа: сумма 1 / (k + rank) по выдачам, где он есть (rank с единицы). Верните id по убыванию оценки, при равенстве по возрастанию id (строки).

Примеры

rrf([["a", "b", "c"], ["b", "c", "a"]]) // ["b", "a", "c"]
rrf([["a", "b"], ["c", "d"]]) // ["a", "c", "b", "d"]
rrf([]) // []

Как подойти

Подсказки: 1
  1. Ранг считается с единицы: enumerate(lst, 1).

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

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