from fractions import Fraction
def barycentric(vertices, point):
vertices, point = tuple(tuple(v) for v in vertices), tuple(point)
if len(vertices) != 3 or any(len(v) != 2 for v in vertices) or len(point) != 2:
raise ValueError("triangle.shape")
if any(type(c) is not int or abs(c) > 10000 for v in vertices + (point,) for c in v):
raise ValueError("coordinate.range")
(x0, y0), (x1, y1), (x2, y2) = vertices
x, y = point
den = (y1-y2)*(x0-x2) + (x2-x1)*(y0-y2)
if den == 0:
raise ValueError("triangle.degenerate")
a = Fraction((y1-y2)*(x-x2) + (x2-x1)*(y-y2), den)
b = Fraction((y2-y0)*(x-x2) + (x0-x2)*(y-y2), den)
return a, b, 1-a-b
✳Обчисліть точні барицентричні ваги за трьома цілочисельними вершинами й точкою з модулями координат до 10000.
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
Проєкт
Перевірте вершину та зовнішню точку, відхиліть колінеарні вершини й підтвердьте відновлення точки за вагами.
Перевірте перед застосуванням
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Моделі
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
from fractions import Fraction
def barycentric(vertices, point):
vertices, point = tuple(tuple(v) for v in vertices), tuple(point)
if len(vertices) != 3 or any(len(v) != 2 for v in vertices) or len(point) != 2:
raise ValueError("triangle.shape")
if any(type(c) is not int or abs(c) > 10000 for v in vertices + (point,) for c in v):
raise ValueError("coordinate.range")
(x0, y0), (x1, y1), (x2, y2) = vertices
x, y = point
den = (y1-y2)*(x0-x2) + (x2-x1)*(y0-y2)
if den == 0:
raise ValueError("triangle.degenerate")
a = Fraction((y1-y2)*(x-x2) + (x2-x1)*(y-y2), den)
b = Fraction((y2-y0)*(x-x2) + (x0-x2)*(y-y2), den)
return a, b, 1-a-b
Робоче середовище з ШІ для коду
Перетворіть геометричну вимогу на зміни коду, які можна перевірити
BarySlate — робоче середовище програмування у Windows для обговорення геометричного коду з підключеною вами моделлю ШІ. Почніть із системи координат і результату, потрібного вашій програмі. Точний опис цих домовленостей допомагає зберегти користь обговорення, коли візуально правдоподібний результат усе ще може мати неправильний знак, порядок або числове подання.
Приклад барицентричних координат трикутника пропонує конкретне завдання проєкту: перевірити ваги зі знаком і відхилення виродженого трикутника. Попросіть модель перевірити функцію разом із кодом, що використовує ці ваги. Поясніть, чи потрібні коду виклику точні дроби або інше подання, перш ніж просити зміну, яка може змінити цей інтерфейс.
Перевірте пропозицію на вершинах, внутрішній і зовнішній точках із незалежно встановленими очікуваннями. Додайте вироджений випадок і перевірте його шлях обробки помилок. Запустіть ці тестові дані інструментами проєкту й також перевірте поведінку коду-споживача; зміна обробки зовнішніх точок може вплинути не лише на саме обчислення.
Модель ШІ без обмежень можна вибрати лише тоді, коли вона доступна через підтримувану кінцеву точку, сумісну з OpenAI, або Anthropic. Надайте облікові дані за потреби й перевірте підтримку контексту та інструментів. Обмеження вибраної моделі залишаються чинними, а BarySlate надає її пропозиціям конкретний контекст проєкту, у якому їх можна оцінити.
Перед прийняттям пропозиції змін геометричного коду
Що слід сказати про точки поза трикутником?
Зазначте, чи очікуються ваги зі знаком і як їх використовує код виклику. Не вважайте зовнішню точку некоректною лише через від’ємну вагу. Додайте тестові дані зовнішньої точки з потрібним результатом і поведінкою коду-споживача.
Навіщо згадувати точні дроби в запиті?
Зміна типу результату може вплинути на порівняння, серіалізацію та подальші обчислення. Якщо проєкт залежить від точних значень, явно зазначте цю вимогу. Перевіряйте будь-яке запропоноване перетворення на числа з рухомою комою разом із кодом виклику, який їх отримає.
Які випадки допомагають виокремити помилку порядку координат?
Почніть із кожної вершини та її очікуваних ваг, потім додайте внутрішню точку з відомим результатом. Явно задайте порядок вершин у тестових даних. Ці випадки можуть виявити припущення про порядок, які приховує одне зображення трикутника.
Чи може BarySlate підтвердити правильність відображеної геометрії?
Встановлюйте це за допомогою середовища візуалізації та перевірок проєкту. Робоче середовище підтримує обговорення коду й пропонування змін. Порівнюйте числові тестові дані з видимою поведінкою, не вважаючи пояснення моделі або одне зображення повною перевіркою.