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.
Encontre pontes num grafo simples não direcionado com até 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)Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
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.
Teste componentes desconectados e ciclos, rejeitando arestas repetidas, laços e extremos inválidos sem alterar a 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 é um ambiente de programação para Windows para examinar lógica de conectividade no contexto de arquivos reais de código. Comece descrevendo a decisão que a aplicação toma a partir do resultado do grafo. Peça ao modelo conectado para examinar a representação da entrada e seu consumidor antes de solicitar uma alteração no percurso ou na saída.
Uma tarefa útil pode usar bridge_edges.py para investigar uma aresta cuja remoção separa uma parte conectada de um caso de teste. Inclua um grafo com ciclo para comparação e declare a lista esperada de arestas. Revise as premissas de grafo simples e não direcionado junto da implementação, para que a alteração proposta não aceite silenciosamente outro tipo de entrada.
O trabalho de software continua depois que a rotina retorna. Examine como o chamador nomeia nós, apresenta arestas e trata dados rejeitados; depois execute verificações do projeto com casos desconectados e vazios. Mantenha a revisão ligada a esses resultados observáveis. Uma explicação correta do grafo não estabelece que a aplicação mapeie seus dados reais para a representação esperada.
SpanSorbus se conecta por endpoints compatíveis com OpenAI ou Anthropic aceitos, com credenciais quando exigidas. Escolha um modelo de IA sem censura quando o endpoint o fornecer, verificando as restrições do provedor e as ferramentas disponíveis. Os limites de contexto dependem do modelo e do servidor; portanto, forneça um caso de teste limitado e os consumidores relevantes para uma conversa focada sobre código.
Confira a definição precisa do grafo e a decisão tomada pela aplicação. Use um caso com resultado esperado escrito independentemente. Revise as premissas do código sobre direção, arestas paralelas e laços antes de transformar uma explicação informal de grafos em requisito de software.
A aplicação pode conter vários componentes separados, cada qual com suas arestas relevantes. Um percurso iniciado em um nó pode perder os demais. Inclua um caso com mais de um componente e compare a saída completa, não apenas a primeira aresta esperada.
Examine primeiro o contrato de entrada aceita. O exemplo espera um grafo simples e rejeita duplicatas. Se os dados importados contêm arestas repetidas, decida se o importador deve normalizá-las ou informar um erro antes de pedir alterações na rotina do grafo.
Defina o mapeamento entre identificadores internos dos nós e rótulos visíveis ao usuário, além da ordenação necessária para uma saída estável. Revise esses mapeamentos com a edição proposta. Um par interno correto de nós ainda pode resultar em uma informação enganosa se o chamador o associar aos rótulos errados.
SpanSorbus · Atualizado 2026-10-25