Profundidad de corchetes anidados
Calcula la profundidad máxima de un texto que solo contiene paréntesis, corchetes y llaves.
def bracket_depth(text):
if type(text) is not str:
raise ValueError("bracket.type")
stack, peak = [], 0
pairs = {')': '(', ']': '[', '}': '{'}
for char in text:
if char in "([{":
stack.append(char)
peak = max(peak, len(stack))
elif char in pairs:
if not stack or stack.pop() != pairs[char]:
raise ValueError("bracket.order")
else:
raise ValueError("bracket.alphabet")
if stack:
raise ValueError("bracket.unclosed")
return peakRevisa 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
Acepta el texto vacío con profundidad cero, pero rechaza pares cruzados, símbolos sin pareja y cualquier otro carácter, incluidos los espacios.
def bracket_depth(text):
if type(text) is not str:
raise ValueError("bracket.type")
stack, peak = [], 0
pairs = {')': '(', ']': '[', '}': '{'}
for char in text:
if char in "([{":
stack.append(char)
peak = max(peak, len(stack))
elif char in pairs:
if not stack or stack.pop() != pairs[char]:
raise ValueError("bracket.order")
else:
raise ValueError("bracket.alphabet")
if stack:
raise ValueError("bracket.unclosed")
return peakHaz que las reglas de validación sean comprensibles para quien las use después
BracketMast incorpora el desarrollo asistido por IA a un entorno Windows donde la carpeta del proyecto y su conversación de programación permanecen conectadas. Úsalo cuando un cambio de validación requiera más precisión que una petición de gestionar entradas incorrectas. Describe el lenguaje admitido, las condiciones de fallo y lo que debe recibir el código que llama a la función; después pide al asistente que inspeccione la implementación existente antes de proponer una corrección.
Una tarea con bracket_depth.py podría centrarse en si una entrada contiene únicamente delimitadores admitidos, si su orden es válido y qué significa un valor vacío. Solicita un parche y ejemplos que hagan visibles esas decisiones. Mantén a la vista la función y el código que la llama: cambiar el alfabeto admitido puede alterar el comportamiento aunque las entradas equilibradas sigan funcionando. Así, la revisión de la validación se centra en el contrato de la aplicación, más allá de una sola demostración satisfactoria.
Tras revisar la propuesta, ejecuta las comprobaciones del proyecto para cadenas admitidas, delimitadores de cierre prematuros y entradas sin terminar. Usa los fallos para precisar la solicitud y conserva el comportamiento de error acordado. BracketMast se conecta a servicios compatibles con OpenAI o Anthropic admitidos, con credenciales cuando sean necesarias. Puedes seleccionar un modelo descrito como sin restricciones si tu servicio lo ofrece; las condiciones del proveedor siguen siendo aplicables y los límites de contexto y las herramientas dependen del modelo y del servidor. Tus pruebas determinan si el código resultante cumple el contrato.
Decidir qué debe admitir un validador
¿Deben ignorarse o rechazarse los caracteres no admitidos?
Elige de forma deliberada según el contrato con el código que llama al validador. Un validador de cadenas compuestas solo por delimitadores puede rechazarlos, mientras que un analizador de código fuente necesita otras reglas. Explica esa distinción al asistente antes de aceptar un cambio que omita silenciosamente caracteres inesperados.
¿Cómo debe comportarse un valor vacío?
Especifica si en tu aplicación es válido, representa una ausencia o constituye un error. Después comprueba tanto el resultado de la función como la interpretación del código que la llama. La convención para entradas vacías no debe depender de un comportamiento accidental del bucle.
¿En qué se diferencia un mensaje de error de un contrato de error?
El contrato incluye qué condición falla, cómo se representa el fallo y qué hace después el código que llama a la función. Revisa esas decisiones en conjunto; mejorar solo la redacción puede dejar valores de retorno incoherentes o una excepción sin gestionar en la aplicación.
¿Puedo reutilizar un validador tras cambiar las entradas que admite?
Inspecciona primero el resto del código que lo llama. Un alfabeto admitido más amplio o un tipo de error diferente puede afectar a código que dependía del comportamiento anterior. Define explícitamente la compatibilidad y añade comprobaciones de esas dependencias antes de reutilizar la función auxiliar modificada.
BracketMast · Actualizado 2026-10-25