División de polinomios mónicos
Divide polinomios enteros de hasta 21 coeficientes por un 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), aRevisa antes de aplicar
Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.
Modelos
Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado.
Proyecto
Comprueba polinomios nulos y un divisor constante, rechazando coeficientes no enteros o divisores no mónicos y verificando la identidad del cociente y 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), aMantén visibles los supuestos matemáticos al editar código
MonicVale es un espacio de programación para Windows donde analizar funciones auxiliares matemáticas en el contexto de la aplicación que las utiliza. Empieza por la carpeta del proyecto e identifica los supuestos de los que depende la función. Pide al asistente que examine esos supuestos en el código antes de solicitar una refactorización. Una propuesta útil explica qué comportamiento permanece igual y qué entradas siguen fuera del contrato admitido.
Una tarea sobre polynomial.py podría examinar una división cuyo divisor deba ser mónico. Aporta ejemplos del orden de los coeficientes, de ceros iniciales y del cociente y resto esperados. Pregunta cómo representa esos resultados la implementación actual y revisa cualquier simplificación propuesta teniendo en cuenta esa representación. Así, la conversación se centra en el comportamiento del software, sin sustituir la revisión de la implementación por una explicación matemática general.
Tras editar, ejecuta las comprobaciones del proyecto y compara las salidas con ejemplos resueltos de forma independiente. Inspecciona también el rechazo de entradas, especialmente cuando el código que llama a la función pueda aportar un divisor no admitido. MonicVale se conecta a endpoints admitidos compatibles con OpenAI o de Anthropic, con credenciales cuando sean necesarias. Los modelos sin restricciones solo están disponibles si los ofrece el endpoint elegido; las restricciones, la capacidad de contexto y las herramientas siguen dependiendo de ese servicio. Utiliza el espacio de trabajo para mantener juntos los supuestos y los resultados observados mientras decides si el cambio está listo.
Supuestos de una función auxiliar matemática
¿Por qué especificar el orden de los coeficientes antes de pedir un cambio?
Una misma lista puede describir polinomios diferentes según la convención. Indica cómo ordena los coeficientes tu proyecto y cómo representa el cero; después comprueba el código que llama a la función y los valores devueltos según esa convención antes de aceptar una refactorización propuesta por el modelo.
¿Debe una función adaptar silenciosamente los divisores no admitidos?
Solo si cambias intencionadamente su contrato e inspeccionas las consecuencias. Una función limitada a divisores mónicos debe notificar de forma coherente las entradas no admitidas; generalizarla puede exigir supuestos aritméticos distintos y pruebas adicionales en todo el código que la llama.
¿Qué debo comprobar sobre el resto?
Comprueba la representación que espera el código que llama a la función y la relación matemática en ejemplos admitidos. Incluye casos sin resto y con resto distinto de cero para que la propuesta no supere las pruebas únicamente por resolver una división sencilla.
¿Es más fiable una función matemática más corta?
No necesariamente. Revisa si la versión más corta conserva la validación, las convenciones de salida y el comportamiento en casos límite. Pide el motivo de cada simplificación y prueba el contrato; la brevedad no demuestra que un supuesto matemático siga siendo válido.
MonicVale · Actualizado 2026-10-25