def divide_monic(dividend, divisor):
for row in (dividend, divisor):
if type(row) not in (list, tuple) or len(row) > 21:
raise ValueError("at most 21 coefficients")
if any(type(x) is not int for x in row): raise ValueError("integers")
def trim(row):
row = list(row)
while row and row[0] == 0: row.pop(0)
return row
a, b = trim(dividend), trim(divisor)
if not b or b[0] != 1: raise ValueError("monic divisor")
quotient = [0] * max(0, len(a) - len(b) + 1)
while a and len(a) >= len(b):
degree, factor = len(a) - len(b), a[0]
quotient[len(quotient)-1-degree] = factor
a = trim([x-factor*y for x,y in zip(a,b)] + a[len(b):])
return trim(quotient), a적용하기 전에 검토하세요
실제 동작을 예상 결과와 비교하세요. 검사가 실패하면 다음 변경을 하기 전에 원인을 조사하세요.
모델
기본 URL과 필요한 API 키로 OpenAI 호환 또는 Anthropic 엔드포인트를 설정하고 연결을 테스트하세요. 로컬 모델 서버는 실행 중이어야 합니다. 원격 도구는 데이터를 별도로 전송할 수 있습니다.
프로젝트
영 다항식과 상수 제수를 시험하고 정수가 아닌 계수나 모닉이 아닌 제수를 거부하며 몫과 나머지 항등식을 확인합니다.
def divide_monic(dividend, divisor):
for row in (dividend, divisor):
if type(row) not in (list, tuple) or len(row) > 21:
raise ValueError("at most 21 coefficients")
if any(type(x) is not int for x in row): raise ValueError("integers")
def trim(row):
row = list(row)
while row and row[0] == 0: row.pop(0)
return row
a, b = trim(dividend), trim(divisor)
if not b or b[0] != 1: raise ValueError("monic divisor")
quotient = [0] * max(0, len(a) - len(b) + 1)
while a and len(a) >= len(b):
degree, factor = len(a) - len(b), a[0]
quotient[len(quotient)-1-degree] = factor
a = trim([x-factor*y for x,y in zip(a,b)] + a[len(b):])
return trim(quotient), a코드를 수정할 때 수학적 가정을 드러내세요
MonicVale는 수학 보조 함수를 이를 사용하는 애플리케이션의 맥락에서 논의하는 Windows 코딩 작업 공간입니다. 프로젝트 폴더에서 시작해 보조 함수가 의존하는 가정을 파악하세요. 리팩터링을 요청하기 전에 도우미가 코드에서 그 가정을 살펴보게 하세요. 유용한 제안은 어떤 동작이 유지되고 어떤 입력이 지원 계약 밖에 남는지 설명합니다.
polynomial.py 관련 작업에서는 제수가 모닉이어야 하는 나눗셈을 검토할 수 있습니다. 계수 순서, 선행 0, 예상 몫과 나머지의 예제를 가져오세요. 현재 구현이 결과를 어떻게 표현하는지 물은 뒤, 제안된 단순화가 그 표현을 유지하는지 검토하세요. 이렇게 하면 일반적인 수학 설명이 구현 검토를 대신하지 않고, 대화가 소프트웨어 동작에 근거하게 됩니다.
수정 후 프로젝트 검사를 실행하고 독립적으로 계산한 예제와 출력을 비교하세요. 특히 호출자가 보조 함수가 지원하지 않는 제수를 전달할 수 있는 곳에서는 입력 거부 동작도 살펴보세요. MonicVale는 지원되는 OpenAI 호환 또는 Anthropic 엔드포인트에 연결하며 필요에 따라 인증 정보를 사용합니다. 제한 없는 모델은 선택한 엔드포인트에서 제공할 때만 선택할 수 있으며, 제한, 컨텍스트 용량, 도구는 여전히 해당 서비스에 따라 달라집니다. 변경이 준비되었는지 판단할 때 작업 공간에서 가정과 관측 결과를 함께 관리하세요.
수학 보조 함수의 바탕이 되는 가정
수정을 요청하기 전에 계수 순서를 지정해야 하는 이유는 무엇인가요?
같은 목록도 규약에 따라 서로 다른 다항식을 나타낼 수 있습니다. 프로젝트의 계수 순서와 0의 표현 방식을 명시한 뒤, 모델이 제안한 리팩터링을 수락하기 전에 호출자와 반환값이 그 규약을 따르는지 확인하세요.
보조 함수가 지원되지 않는 제수에 조용히 적응해야 하나요?
계약을 의도적으로 바꾸고 결과를 검토하는 경우에만 그렇습니다. 모닉 제수만 허용하는 보조 함수는 지원되지 않는 입력을 일관되게 보고해야 합니다. 일반화하려면 산술 가정을 바꾸고 호출 코드 전반에 테스트를 추가해야 할 수 있습니다.
나머지에 관해 무엇을 확인해야 하나요?
호출자가 기대하는 표현 방식과 지원되는 예제의 수학적 관계를 확인하세요. 나머지가 없는 경우와 0이 아닌 나머지가 있는 경우를 모두 포함하여, 제안이 쉬운 나눗셈만 처리하고 통과하지 못하도록 하세요.
짧은 수학 함수가 더 믿을 만한가요?
반드시 그렇지는 않습니다. 짧아진 버전이 검증, 출력 규약, 경계 동작을 유지하는지 검토하세요. 각 단순화의 이유를 묻고 계약을 테스트하세요. 짧다는 사실은 수학적 가정이 여전히 유효하다는 근거가 아닙니다.
MonicVale · 업데이트 2026-10-25