Код Senior CI и параллельный запуск обновлено
Шарды по длительности тестов
Условие
Напишите balance_shards(durations, n). durations это словарь «тест → секунды», n число шардов. Жадный алгоритм:
- Отсортировать тесты по убыванию длительности, при равной по имени по возрастанию.
- Каждый тест класть в шард с наименьшей суммой, при равенстве в шард с меньшим номером.
Вернуть {"shards": [[тесты в порядке добавления], ...], "loads": [суммы шардов]}.
Примеры
balance_shards({"a":10,"b":8,"c":5,"d":4,"e":3}, 2) // {"shards":[["a","d"],["b","c","e"]],"loads":[14,16]}
balance_shards({"x":5,"y":5,"z":5}, 3) // {"shards":[["x"],["y"],["z"]],"loads":[5,5,5]}
balance_shards({"a":1}, 3) // {"shards":[["a"],[],[]],"loads":[1,0,0]}
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.