Орієнтована площа багатокутника
Поверніть подвоєну орієнтовану площу для 3–256 цілочислових вершин із модулями координат до 1000000.
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]))Перевірте перед застосуванням
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Моделі
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
Проєкт
Перевірте зворотний порядок і колінеарність, трактуйте самоперетини алгебраїчно та відхиляйте некоректні координати.
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]))Пов’яжіть координатні домовленості з кодом, який їх використовує
ShoalMetric — робоче середовище програмування з ШІ для Windows, у якому можна обговорювати обчислення в контексті програми, що використовує їхні результати. Виберіть теку проєкту й опишіть координатну домовленість, очікуваний результат і випадки, які програма має відхиляти. Попросіть підключеного помічника перевірити валідацію та код споживачів перед пропозицією змін. Це задає геометричному завданню конкретні програмні межі, замість залишати його зміст в ізольованій формулі.
У завданні з polygon.py можна запитати, чому зворотний порядок точок змінює результат обчислення знакової площі. Надайте приклад багатокутника й укажіть, чи потрібна коду виклику орієнтація, модуль величини або інше подання. Оцініть запропоновану зміну щодо цієї вимоги, зокрема порядку надходження вершин. Корисний результат — код, значення результату якого узгоджене всюди, де програма його використовує.
Після аналізу запустіть перевірки проєкту з простою фігурою, зворотним порядком і виродженими випадками, передбаченими вашим контрактом. Порівняйте обчислення та подальшу поведінку, а розбіжності поверніть до обговорення. ShoalMetric підтримує підключення моделей через сумісні з OpenAI кінцеві точки або Anthropic з обліковими даними за потреби. Можна вибрати модель без обмежень, якщо вона доступна й це відповідає правилам постачальника; інструменти, місткість контексту та обмеження відповідей усе одно залежать від налаштованої моделі й сервера. Перевірка очікуваної геометричної поведінки залишається вашим завданням.
Геометричні припущення, які слід узгодити в середовищі
Чи слід вважати від’ємну площу помилкою?
Це залежить від того, чи використовує код виклику знакову величину для збереження орієнтації. Визначте потрібне значення перед зміною знака або взяттям модуля, а потім перевірте вплив на код, що використовує результат.
Навіщо включати зворотний порядок вершин до тесту?
Він показує, чи є орієнтація частиною контракту та чи зберігає її реалізація. Використайте фігуру з незалежно відомим результатом, а потім перевірте числовий результат і поведінку коду виклику для зворотної послідовності.
Чи перевіряє приклад усі можливі багатокутники?
Не робіть такого висновку з обчислення площі. Якщо програмі потрібні перевірки перетинів або інших геометричних властивостей, сформулюйте ці вимоги окремо й дослідіть відповідну реалізацію, не припускаючи, що обчислення їх установлює.
Як вибрати межі координат?
Виходьте з обмежень програми та числового подання. Повідомте помічнику ці межі, перевірте їх застосування й протестуйте близькі до них значення. Межі в прикладі коду не підтверджують точність або продуктивність для іншого масштабу даних.
ShoalMetric · Оновлено 2026-10-25