Pole wielokąta ze znakiem
Zwróć podwojone pole ze znakiem dla 3–256 całkowitych wierzchołków o współrzędnych do 1000000 co do modułu.
def signed_double_area(points):
if type(points) not in (list, tuple) or not 3 <= len(points) <= 256:
raise ValueError("polygon.count")
for p in points:
if type(p) not in (list, tuple) or len(p) != 2 or any(type(v) is not int or abs(v) > 10**6 for v in p):
raise ValueError("polygon.coordinate")
return sum(a[0]*b[1]-a[1]*b[0] for a,b in zip(points, points[1:]+points[:1]))Sprawdź 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ź odwrotną kolejność i współliniowość, traktuj samoprzecięcia algebraicznie i odrzucaj błędne współrzędne.
def signed_double_area(points):
if type(points) not in (list, tuple) or not 3 <= len(points) <= 256:
raise ValueError("polygon.count")
for p in points:
if type(p) not in (list, tuple) or len(p) != 2 or any(type(v) is not int or abs(v) > 10**6 for v in p):
raise ValueError("polygon.coordinate")
return sum(a[0]*b[1]-a[1]*b[0] for a,b in zip(points, points[1:]+points[:1]))Powiąż konwencje współrzędnych z kodem, który ich używa
ShoalMetric to środowisko programowania z AI dla Windows do omawiania obliczeń w kontekście korzystającej z nich aplikacji. Wybierz folder projektu i opisz konwencję współrzędnych, oczekiwany wynik oraz przypadki, które aplikacja musi odrzucać. Poproś podłączonego asystenta o sprawdzenie walidacji i kodu odbierającego wyniki przed zaproponowaniem zmian. Nadaje to zadaniu geometrycznemu konkretny zakres programistyczny, zamiast pozostawiać jego znaczenie w odizolowanym wzorze.
Zadanie dotyczące polygon.py może polegać na ustaleniu, dlaczego odwrócenie kolejności punktów zmienia wynik pola ze znakiem. Podaj przykładowy wielokąt i określ, czy kod wywołujący potrzebuje orientacji, wartości bezwzględnej, czy innej reprezentacji. Oceń proponowaną zmianę względem tego wymagania, uwzględniając kolejność napływania wierzchołków. Użytecznym rezultatem jest kod, którego wynik ma uzgodnione znaczenie wszędzie tam, gdzie używa go aplikacja.
Po przeglądzie uruchom kontrole projektu dla prostej figury, odwróconej kolejności i przypadków zdegenerowanych objętych kontraktem. Porównaj obliczenie i dalsze zachowanie aplikacji, a rozbieżności omów w rozmowie. ShoalMetric obsługuje połączenia z modelami zgodnymi z OpenAI lub Anthropic, z danymi uwierzytelniającymi w razie potrzeby. Możesz wybrać model bez ograniczeń, jeśli jest dostępny i pozwalają na to zasady dostawcy; narzędzia, pojemność kontekstu i ograniczenia odpowiedzi nadal zależą od skonfigurowanego modelu i serwera. Weryfikacja oczekiwanego zachowania geometrycznego pozostaje Twoim zadaniem.
Założenia geometryczne do ustalenia w środowisku pracy
Czy ujemny wynik pola należy traktować jako błąd?
Zależy to od tego, czy kod wywołujący używa wielkości ze znakiem do zachowania orientacji. Określ wymagane znaczenie przed zmianą znaku lub użyciem wartości bezwzględnej, a następnie sprawdź wpływ na kod korzystający z wyniku.
Dlaczego testować odwróconą kolejność wierzchołków?
Ujawnia to, czy orientacja jest częścią kontraktu i czy implementacja ją zachowuje. Użyj figury o niezależnie znanym wyniku, a następnie sprawdź zarówno wynik liczbowy, jak i zachowanie kodu wywołującego dla odwróconej sekwencji.
Czy przykład waliduje każdy możliwy wielokąt?
Nie wyciągaj takiego wniosku z obliczania pola. Jeśli aplikacja wymaga wykrywania przecięć lub innych właściwości geometrycznych, określ te wymagania oddzielnie i sprawdź właściwą implementację, zamiast zakładać, że obliczenie je potwierdza.
Jak dobrać granice współrzędnych?
Kieruj się ograniczeniami aplikacji i reprezentacji liczbowej. Podaj asystentowi te limity, sprawdź sposób ich egzekwowania i przetestuj wartości bliskie granicom. Limity w przykładowym kodzie nie potwierdzają dokładności ani wydajności dla innej skali danych.
ShoalMetric · Zaktualizowano 2026-10-25