Код Middle RAG обновлено

Уложить чанки в бюджет токенов

Условие

Напишите pack_context(chunks, budget): chunks список словарей {"id": str, "score": float, "tokens": int}. Перебирайте чанки по убыванию score (при равенстве по возрастанию id) и добавляйте чанк, если он помещается в оставшийся бюджет; если не помещается, пропускайте и идите дальше. Верните список id в порядке добавления.

Примеры

pack_context([{"id":"a","score":0.9,"tokens":300}, {"id":"b","score":0.8,"tokens":500}, {"id":"c","score":0.7,"tokens":200}], 600) // ["a", "c"]
pack_context([], 1000) // []
pack_context([{"id":"a","score":0.9,"tokens":2000}], 1000) // []

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

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