MMonicVale
Ambiente de programação com IA

Divisão por polinômio mônico

Divida polinômios inteiros de até 21 coeficientes por um divisor mônico.

● ● ●MonicVale●
Fluxos de trabalho · Divisão por polinômio 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), a
✳Divida polinômios inteiros de até 21 coeficientes por um divisor mônico.
✓ AlteraçõesRevise antes de aplicar ↗
Ilustração do ambiente
  1. Revise 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.

  2. 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.

  3. 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.

Fluxos de trabalho

Divisão por polinômio mônico

Fluxos de trabalho ↗
Fluxos de trabalho
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
Ambiente de programação com IA

Mantenha 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.

Baixar para Windows ↗

MonicVale · Atualizado 2026-10-25