Divisão por polinômio mônico
Divida polinômios inteiros de até 21 coeficientes por um divisor mônico.
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), aRevise antes de aplicar
Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
Modelos
Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.
Projeto
Confira polinômios nulos e divisor constante, rejeitando coeficientes não inteiros ou divisor não mônico e verificando a identidade do quociente e resto.
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), aMantenha as premissas matemáticas visíveis ao editar código
O MonicVale é um ambiente de programação para Windows para discutir funções auxiliares matemáticas no contexto da aplicação que as utiliza. Comece pela pasta do projeto e identifique as premissas das quais a função depende. Peça ao assistente que examine essas premissas no código antes de solicitar uma refatoração. Uma proposta útil explica qual comportamento permanece igual e quais entradas continuam fora do contrato suportado.
Uma tarefa envolvendo polynomial.py pode examinar a divisão em que o divisor deve ser mônico. Traga exemplos da ordem dos coeficientes, de zeros à esquerda e do quociente e resto esperados. Pergunte como a implementação atual representa esses resultados e revise qualquer simplificação proposta à luz dessa representação. Isso mantém a conversa fundamentada no comportamento do software, sem permitir que uma explicação matemática geral substitua a revisão da implementação.
Após editar, execute as verificações do projeto e compare as saídas com exemplos resolvidos de forma independente. Examine também o comportamento de rejeição, principalmente quando o código chamador puder fornecer um divisor não suportado pela função. O MonicVale se conecta a endpoints compatíveis com OpenAI ou endpoints Anthropic suportados, com credenciais conforme necessário. Modelos sem restrições só são opções quando o endpoint escolhido os oferece; restrições, capacidade de contexto e ferramentas ainda dependem desse serviço. Use o ambiente para manter as premissas e os resultados observados juntos ao decidir se a alteração está pronta.
Premissas de uma função auxiliar matemática
Por que especificar a ordem dos coeficientes antes de solicitar uma edição?
A mesma lista pode descrever polinômios diferentes conforme a convenção. Informe como seu projeto ordena os coeficientes e representa o zero; depois, verifique os chamadores e os valores retornados em relação a essa convenção antes de aceitar uma refatoração proposta pelo modelo.
Uma função deve adaptar silenciosamente divisores não suportados?
Somente se você alterar intencionalmente seu contrato e examinar as consequências. Uma função limitada a divisores mônicos deve informar entradas não suportadas de maneira consistente; generalizá-la pode exigir premissas aritméticas diferentes e testes adicionais em todo o código chamador.
O que devo verificar sobre o resto?
Confira a representação esperada pelo chamador e a relação matemática nos exemplos suportados. Inclua casos sem resto e com resto diferente de zero, para que a proposta não seja aprovada apenas por resolver uma divisão fácil.
Uma função matemática mais curta é mais confiável?
Não necessariamente. Revise se a versão mais curta preserva a validação, as convenções de saída e o comportamento nos casos extremos. Peça a justificativa de cada simplificação e teste o contrato; a concisão não demonstra que uma premissa matemática continua válida.
MonicVale · Atualizado 2026-10-25