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과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.
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용 AI 코딩 작업 공간입니다. 제안이 공식을 재배열하는 데 그치지 않고 실제 동작에 답하도록 수정 전에 관련 계산과 이를 사용하는 코드를 살펴보도록 연결된 모델에 요청하세요.
예를 들어 선택 도구가 점 집합을 둘러싼 외곽 경계를 사용할 수 있습니다. 중복점과 일직선상의 점이 그 경계에 미치는 영향을 검토하도록 요청하고 변 위의 중간 점을 결과에 포함할지 설명하세요. 렌더링 호출 코드와 대표 테스트 데이터를 포함하세요. 이는 Hullspring에 선택 도구가 내장되어 있다고 가정하지 않으면서 구체적인 작업을 제시하는 방법입니다.
일반적인 도형뿐 아니라 출력 순서, 입력 검증, 빈 입력의 경우도 패치에서 검토하세요. 일직선상의 점, 반복된 좌표, 작은 다각형으로 프로젝트를 실행하세요. 반환 시퀀스를 사용하는 코드의 기대와 비교하세요. 기하학적으로 올바른 집합이라도 순서나 닫힘 규칙이 다르면 잘못 표시될 수 있습니다.
Hullspring은 OpenAI 호환 또는 Anthropic 엔드포인트를 통한 모델 연결을 지원합니다. 제공되는 경우 거부 성향 제거(abliterated) AI 모델을 선택할 수 있지만 제한, 컨텍스트 용량, 도구는 해당 서비스가 결정합니다. 대화로 구현 선택을 명확히 하고 프로젝트 자체의 테스트 데이터에 근거해 검증하세요.
기하 코드 유지보수 요청 준비
- 일직선상의 변 위 점을 경계에 남겨야 하나요?
결과를 사용하는 코드의 요구 사항을 명시하세요. 극점만 필요한 경우도 있고 중간 점을 유지해야 하는 경우도 있습니다. 현재 규칙을 살펴보고 정책 변경을 제안과 테스트에 명시하도록 모델에 요청하세요.
- 계산 검토에 렌더링 코드를 왜 포함하나요?
특정 순회 순서나 닫는 꼭짓점의 반복을 기대할 수 있기 때문입니다. 계산이 의도한 점을 반환해도 그 인터페이스를 어길 수 있습니다. 사용하는 코드를 살펴보면 국소적인 수정으로 화면에 회귀 문제가 생기는 것을 예방할 수 있습니다.
- 가정을 빠르게 드러내는 테스트 데이터는 무엇인가요?
빈 집합, 점 하나, 중복점, 직선, 내부 점이 있는 작은 다각형을 사용하세요. 각각의 예상 출력 규칙을 작성하세요. 그려진 도형에만 의존하지 말고 프로젝트에서 실행하세요.
- 패치에서 허용 좌표 형식이 부수적으로 넓어져도 되나요?
별도의 계약 변경으로 다루세요. 수치 표현이 달라지면 비교와 검증에 영향을 줄 수 있습니다. 한정된 기하 코드 수정에 포함해 수용하기 전에 확장이 필요한 이유를 묻고 호출 코드를 확인하세요.
Hullspring · 업데이트 2026-10-25