Выпуклые оболочки целочисленных точек
Hullspring поддерживает изменение кода через папку проекта, диалог с ИИ и подключение совместимой модели в Windows. Проверьте условие поворота в алгоритме выпуклой оболочки и на небольших наборах точек выясните, какие коллинеарные вершины сохраняются.
def convex_hull(points):
if type(points) is not list or len(points) > 1000:
raise ValueError("hull.input")
if any(type(p) not in (tuple, list) or len(p) != 2 or
any(type(v) is not int for v in p) for p in points):
raise ValueError("hull.point")
ordered = sorted(set(map(tuple, points)))
if len(ordered) <= 1:
return ordered
def turn(a,b,c):
return (b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0])
def chain(sequence):
out = []
for p in sequence:
while len(out) >= 2 and turn(out[-2],out[-1],p) <= 0:
out.pop()
out.append(p)
return out
return chain(ordered)[:-1]+chain(reversed(ordered))[:-1]- Проект
- Проверьте пустой ввод, дубликаты и коллинеарные точки, оставляя только крайние концы и отклоняя дробные координаты.
- Проверьте перед применением
- Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
- Подключение
- Базовый URL, учётные данные и доступный сервер.
def convex_hull(points):
if type(points) is not list or len(points) > 1000:
raise ValueError("hull.input")
if any(type(p) not in (tuple, list) or len(p) != 2 or
any(type(v) is not int for v in p) for p in points):
raise ValueError("hull.point")
ordered = sorted(set(map(tuple, points)))
if len(ordered) <= 1:
return ordered
def turn(a,b,c):
return (b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0])
def chain(sequence):
out = []
for p in sequence:
while len(out) >= 2 and turn(out[-2],out[-1],p) <= 0:
out.pop()
out.append(p)
return out
return chain(ordered)[:-1]+chain(reversed(ordered))[:-1]Свяжите изменения геометрии с использующим их приложением
Геометрический код легче проверять, когда требуемый результат описан в терминах приложения. Hullspring — рабочая среда программирования с ИИ для Windows, где можно разобрать это требование в открытом проекте. Попросите подключённую модель изучить вычисление и его потребителей до предложения правок, чтобы предложение отвечало реальному поведению, а не просто переставляло формулу.
Например, инструмент выделения может использовать внешнюю границу множества точек. Попросите проверить влияние дубликатов и коллинеарных точек на эту границу и объясните, должны ли промежуточные точки рёбер входить в результат. Добавьте вызывающий код отрисовки и характерные тестовые примеры. Это даёт помощнику конкретную задачу, не предполагая, что Hullspring включает инструмент выделения.
Проверьте в предлагаемом исправлении порядок вывода, проверку входных данных и пустой случай наряду с обычной фигурой. Запустите проект с точками на прямой, повторяющимися координатами и небольшим многоугольником. Сравните возвращённую последовательность с ожиданиями потребителя: правильное геометрическое множество может отображаться неверно при различии соглашений о порядке или замыкании.
Hullspring поддерживает подключение моделей через совместимые с OpenAI конечные точки или Anthropic. При наличии можно выбрать аблитерированную модель ИИ, но ограничения, объём контекста и инструменты определяет её сервис. Используйте обсуждение для уточнения решений реализации, а проверку основывайте на тестовых примерах самого проекта.
Подготовка запроса на сопровождение геометрического кода
- Должны ли коллинеарные точки рёбер оставаться на границе?
Укажите требования потребителя. Некоторым нужны лишь крайние вершины, другим — промежуточные точки. Попросите модель изучить текущее соглашение и явно отразить любое изменение правила в предложении и тестах.
- Зачем включать код отрисовки в проверку вычисления?
Он может ожидать определённого порядка обхода или повторения замыкающей вершины. Вычисление может вернуть нужные точки, но нарушить этот интерфейс. Изучение потребителя помогает избежать видимой регрессии из-за локального исправления.
- Какие примеры быстро выявляют предположения?
Используйте пустое множество, одну точку, дубликаты, прямую и небольшой многоугольник с внутренней точкой. Запишите ожидаемое соглашение о результате для каждого. Запускайте их в проекте, не полагаясь только на рисунок.
- Может ли исправление попутно расширить допустимые типы координат?
Считайте это отдельным изменением условий работы. Разные численные представления могут влиять на сравнения и проверку. Уточните, зачем нужно расширение, и проверьте вызывающий код, прежде чем принимать его в составе узкого геометрического исправления.
Hullspring · Обновлено 2026-10-25