Средние ранги одинаковых значений
RankTrell — ИИ-клиент Windows для изучения ранжирования в контексте исходников. Откройте папку проекта, сравните предложенную моделью обработку совпадений с контрактом и проверьте изменения перед применением.
from math import isfinite
def average_ranks(values):
if type(values) not in (list, tuple) or len(values) > 1000:
raise ValueError("values.container")
values = tuple(values)
if len(values) > 1000 or any(
type(v) not in (int, float) or
(type(v) is float and not isfinite(v)) for v in values
):
raise ValueError("values.invalid")
order = sorted(range(len(values)), key=values.__getitem__)
result = [0.0] * len(values)
first = 0
while first < len(order):
end = first + 1
while end < len(order) and values[order[end]] == values[order[first]]:
end += 1
rank = (first + 1 + end) / 2
for i in order[first:end]:
result[i] = rank
first = end
return resultПроверьте перед применением
Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
Подключение
Базовый URL, учётные данные и доступный сервер.
Проект
Проверьте совпадения, отрицательные значения и пустой ввод, отклоняя логические типы и неконечные дробные числа до сортировки.
from math import isfinite
def average_ranks(values):
if type(values) not in (list, tuple) or len(values) > 1000:
raise ValueError("values.container")
values = tuple(values)
if len(values) > 1000 or any(
type(v) not in (int, float) or
(type(v) is float and not isfinite(v)) for v in values
):
raise ValueError("values.invalid")
order = sorted(range(len(values)), key=values.__getitem__)
result = [0.0] * len(values)
first = 0
while first < len(order):
end = first + 1
while end < len(order) and values[order[end]] == values[order[first]]:
end += 1
rank = (first + 1 + end) / 2
for i in order[first:end]:
result[i] = rank
first = end
return resultЯвно определите место равных значений в результате
RankTrell — рабочая среда программирования с ИИ для Windows для разработчиков, воплощающих правила данных в изменениях реализации. Откройте проект и опишите обработку равных значений, отсутствующих результатов и связь порядка ввода с выводом. Попросите подключённую модель изучить вычисление и потребителей, чтобы предложение отвечало бизнес-правилу, а не просто создавало отсортированный список.
Контекст ranks.py предлагает задачу средних рангов для равных значений. Можно попросить объяснить соответствие результатов исходным позициям, затем запросить узкую правку, если проект ведёт себя иначе. Небольшие примеры с известными ответами сделают обсуждение конкретным. Проверьте правило равенства и представление, возвращаемое остальному приложению.
Когда реализация готова к проверке, запустите проверки проекта на равных и отрицательных значениях, а также вводе, который функция должна отклонять. Сравните результаты с примерами, согласованными до правок. RankTrell поддерживает конечные точки моделей, совместимые с OpenAI, или Anthropic с учётными данными при необходимости. Можно выбрать предлагаемую через подключение модель ИИ без ограничений на условиях провайдера; инструменты и пределы контекста зависят от модели и сервера. Ясный ожидаемый результат полезнее уверенности в сгенерированном объяснении.
Правила ранжирования, которые нужно определить до принятия кода
Должны ли равные значения получать разные позиции?
Это зависит от нужного приложению правила ранжирования. Укажите, получают ли равные значения общий средний ранг, другой общий ранг или вторичный ключ. Попросите примеры до реализации, чтобы выбранное правило было видимым и проверяемым.
Зачем сохранять связь с исходным порядком ввода?
Потребителю может требоваться присвоить каждый ранг записи, давшей значение. Явно проверьте соответствие: корректно отсортированная последовательность может присвоить результаты неверным записям, если не восстановить позиции.
Можно ли просто сортировать недопустимые числа в конец?
Только если таково заданное правило и потребители его понимают. Иначе требуйте отклонения или другого явного представления. Изучите численную проверку вместе с кодом ранжирования, не позволяя поведению сравнений во время выполнения определять правило приложения.
Как проверить рефакторинг ранжирования без большого набора данных?
Начните с нескольких проверяемых вручную случаев: равных значений, разных значений и пустого ввода. Затем при необходимости используйте характерные данные проекта. Малые случаи облегчают выявление различий правил до увеличения объёма проверки.
RankTrell · Обновлено 2026-10-25