Średnie rangi przy remisach
Przypisz średnie rangi od jednego najwyżej 1000 skończonym wartościom liczbowym, zachowując ich pozycje.
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 resultSprawdź przed zastosowaniem
Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
Modele
Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.
Projekt
Sprawdź remisy, wartości ujemne i pusty zbiór, odrzucając wartości logiczne i nieskończone liczby zmiennoprzecinkowe przed sortowaniem.
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 resultNadaj równym wartościom jawnie określone miejsce w wyniku
RankTrell to środowisko programistyczne AI dla Windows dla twórców przekładających reguły danych na zmiany implementacji. Otwórz projekt i opisz, jak aplikacja ma traktować równe wartości, brakujące wyniki oraz relację kolejności wejścia i wyjścia. Poproś podłączony model o sprawdzenie obliczenia i jego odbiorców, aby propozycja odpowiadała regule biznesowej, a nie tylko tworzyła posortowaną listę.
Kontekst ranks.py sugeruje zadanie dotyczące średnich rang dla równych wartości. Możesz poprosić o wyjaśnienie, jak wyniki wracają na oryginalne pozycje, a potem o konkretną zmianę, jeśli projekt zachowuje się inaczej. Użyj małych przykładów ze znanymi odpowiedziami, aby rozmowa pozostała konkretna. Sprawdź zarówno regułę remisów, jak i reprezentację zwracaną reszcie aplikacji.
Gdy implementacja jest gotowa do przeglądu, uruchom kontrole projektu dla równych i ujemnych wartości oraz danych, które funkcja powinna odrzucić. Porównaj rzeczywiste wyniki z przykładami uzgodnionymi przed edycją. RankTrell obsługuje punkty końcowe modeli zgodne z OpenAI lub punkty końcowe Anthropic, używając danych uwierzytelniających, gdy są wymagane. Możesz wybrać model AI bez ograniczeń oferowany przez to połączenie, z zastrzeżeniem warunków dostawcy; narzędzia i limity kontekstu zależą od modelu i serwera. Jasny oczekiwany wynik pozostaje bardziej użyteczny niż zaufanie do wygenerowanego wyjaśnienia.
Reguły rang do ustalenia przed przyjęciem kodu
Czy równe wartości powinny otrzymywać różne pozycje?
Zależy to od reguły rang potrzebnej aplikacji. Określ, czy remisy otrzymują średnią rangę, inną wspólną rangę czy są rozstrzygane drugim kluczem. Poproś o przykłady przed implementacją, aby wybrana polityka była widoczna i testowalna.
Dlaczego zachować związek z pierwotną kolejnością danych?
Odbiorca może potrzebować przypisania każdej rangi do rekordu, który dostarczył wartość. Sprawdź to mapowanie jawnie; poprawnie posortowana sekwencja nadal może przypisać wyniki niewłaściwym rekordom, jeśli pozycje nie zostaną przywrócone.
Czy nieprawidłowe liczby mogą po prostu trafić na koniec sortowania?
Tylko jeśli tak określisz politykę i odbiorcy ją rozumieją. W przeciwnym razie wymagaj odrzucenia lub innej jawnej reprezentacji. Sprawdź walidację liczb razem z kodem rang, zamiast pozwalać, aby zachowanie porównań w środowisku wykonawczym definiowało regułę aplikacji.
Jak ocenić refaktoryzację rang bez dużego zbioru danych?
Zacznij od kilku przypadków możliwych do ręcznego sprawdzenia, z remisami, różnymi wartościami i pustym wejściem. Potem w razie potrzeby użyj reprezentatywnych danych projektu. Małe przypadki ułatwiają rozpoznanie różnic reguł przed zwiększeniem skali walidacji.
RankTrell · Zaktualizowano 2026-10-25