Revisa antes de aplicar
Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.
Encuentra puentes en un grafo simple no dirigido de hasta 32 vértices.
def bridge_edges(n, edges):
if type(n) is not int or not 0 <= n <= 32:
raise ValueError("vertex count")
if type(edges) is not list or len(edges) > 496:
raise ValueError("edge count")
graph = [set() for _ in range(n)]
for edge in edges:
if type(edge) is not tuple or len(edge) != 2 or any(
type(x) is not int or not 0 <= x < n for x in edge):
raise ValueError("edge endpoints")
a, b = edge
if a == b or b in graph[a]:
raise ValueError("simple undirected edges")
graph[a].add(b); graph[b].add(a)
timer, found = 0, []
entered, low = [-1] * n, [0] * n
def visit(v, parent):
nonlocal timer
entered[v] = low[v] = timer; timer += 1
for u in sorted(graph[v]):
if u == parent:
continue
if entered[u] < 0:
visit(u, v); low[v] = min(low[v], low[u])
if low[u] > entered[v]:
found.append(tuple(sorted((v, u))))
else:
low[v] = min(low[v], entered[u])
for v in range(n):
if entered[v] < 0:
visit(v, -1)
return sorted(found)Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.
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.
Prueba componentes desconectados y ciclos, rechazando aristas duplicadas, bucles y extremos inválidos sin cambiar la entrada.
def bridge_edges(n, edges):
if type(n) is not int or not 0 <= n <= 32:
raise ValueError("vertex count")
if type(edges) is not list or len(edges) > 496:
raise ValueError("edge count")
graph = [set() for _ in range(n)]
for edge in edges:
if type(edge) is not tuple or len(edge) != 2 or any(
type(x) is not int or not 0 <= x < n for x in edge):
raise ValueError("edge endpoints")
a, b = edge
if a == b or b in graph[a]:
raise ValueError("simple undirected edges")
graph[a].add(b); graph[b].add(a)
timer, found = 0, []
entered, low = [-1] * n, [0] * n
def visit(v, parent):
nonlocal timer
entered[v] = low[v] = timer; timer += 1
for u in sorted(graph[v]):
if u == parent:
continue
if entered[u] < 0:
visit(u, v); low[v] = min(low[v], low[u])
if low[u] > entered[v]:
found.append(tuple(sorted((v, u))))
else:
low[v] = min(low[v], entered[u])
for v in range(n):
if entered[v] < 0:
visit(v, -1)
return sorted(found)SpanSorbus es un entorno de programación para Windows que permite examinar lógica de conectividad en el contexto de archivos de código reales. Empieza por describir la decisión que toma tu aplicación a partir del resultado del grafo. Pide al modelo conectado que examine la representación de entrada y su consumidor antes de solicitar un cambio en el recorrido o la salida.
Una tarea útil podría usar bridge_edges.py para investigar una arista cuya eliminación separa una parte conexa de un caso de prueba. Incluye un grafo con un ciclo como comparación e indica la lista de aristas esperada. Revisa los supuestos de grafo simple no dirigido junto con la implementación para que el cambio propuesto no acepte silenciosamente otro tipo de entrada.
El trabajo de software continúa después del retorno de la rutina. Examina cómo el consumidor nombra nodos, presenta aristas y gestiona datos rechazados, y ejecuta las comprobaciones del proyecto con casos desconectados y vacíos. Mantén la revisión vinculada a esos resultados observables. Una explicación correcta del grafo no demuestra que la aplicación transforme sus datos reales en la representación esperada.
SpanSorbus se conecta mediante endpoints compatibles con OpenAI o de Anthropic admitidos, con credenciales cuando se requieran. Elige un modelo de IA sin censura donde el endpoint lo proporcione, comprobando las restricciones y las herramientas disponibles del proveedor. Los límites de contexto dependen del modelo y del servidor, así que aporta un caso acotado y los consumidores pertinentes para una conversación de programación enfocada.
Comprueba la definición precisa del grafo y la decisión que toma tu aplicación. Utiliza un caso cuyo resultado esperado hayas escrito independientemente. Revisa los supuestos del código sobre dirección, aristas paralelas y bucles antes de trasladar una explicación informal de grafos a un requisito de software.
La aplicación puede contener varios componentes separados, cada uno con sus aristas pertinentes. Un recorrido que empiece en un solo nodo puede omitir los demás. Incluye un caso con más de un componente y compara la salida completa, no solo la primera arista esperada.
Examina primero el contrato de entrada admitida. El ejemplo espera un grafo simple y rechaza duplicados. Si los datos importados contienen aristas repetidas, decide si el importador debe normalizarlas o informar de un error antes de pedir cambios en la rutina del grafo.
Define la correspondencia entre identificadores internos de nodos y etiquetas visibles, además del orden necesario para una salida estable. Revisa esas correspondencias con el cambio propuesto. Una pareja interna correcta puede convertirse en un resultado engañoso si el consumidor la asocia con etiquetas equivocadas.
SpanSorbus · Actualizado 2026-10-25