Controlla prima di applicare
Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
Trova i ponti in un grafo semplice non orientato con massimo 32 vertici.
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)Confronta il comportamento effettivo con il risultato atteso. Se una verifica fallisce, indaga la causa prima di altre modifiche.
Configura un endpoint compatibile con OpenAI o Anthropic usando URL di base e chiave API, se necessaria. Prova la connessione. Il server locale deve essere in esecuzione; gli strumenti remoti possono trasmettere dati separatamente.
Controlla componenti separate e cicli, rifiutando archi duplicati, cappi ed estremi non validi senza modificare l’ingresso.
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 è un ambiente di programmazione per Windows per esaminare la logica di connettività nel contesto di file sorgente reali. Inizia descrivendo la decisione che l'applicazione prende dal risultato del grafo. Chiedi al modello collegato di esaminare la rappresentazione dell'input e il codice che la usa prima di richiedere una modifica alla visita o all'output.
Un'attività utile può usare bridge_edges.py per analizzare un arco la cui rimozione separa una parte connessa di un caso di test. Includi un grafo con un ciclo come confronto e indica l'elenco di archi atteso. Rivedi le ipotesi di grafo semplice e non orientato insieme all'implementazione, affinché la modifica proposta non accetti silenziosamente un diverso tipo di input.
Il lavoro sul software continua dopo che la procedura restituisce il risultato. Esamina come il chiamante denomina i nodi, presenta gli archi e gestisce i dati rifiutati, poi esegui i controlli del progetto con casi disconnessi e vuoti. Mantieni la revisione legata a questi risultati osservabili. Una spiegazione corretta del grafo non dimostra che l'applicazione mappi i dati effettivi nella rappresentazione prevista.
SpanSorbus si collega tramite endpoint supportati compatibili con OpenAI o Anthropic, con credenziali quando richieste. Scegli un modello di IA senza censura dove l'endpoint ne fornisce uno, controllando restrizioni del fornitore e strumenti disponibili. I limiti di contesto dipendono da modello e server, quindi fornisci un caso di test circoscritto e il codice utilizzatore pertinente per una conversazione mirata sul codice.
Controlla la definizione precisa del grafo e la decisione presa dall'applicazione. Usa un caso di test con risultato atteso scritto indipendentemente. Rivedi le ipotesi del codice su orientamento, archi paralleli e cappi prima di trasformare una spiegazione informale del grafo in un requisito software.
L'applicazione può contenere più componenti separate, ognuna con archi rilevanti propri. Una visita che parte da un nodo può non raggiungere le altre. Includi un caso con più componenti e confronta l'intero output, non solo il primo arco atteso.
Esamina prima il contratto degli input accettati. L'esempio prevede un grafo semplice e rifiuta i duplicati. Se i dati importati contengono archi ripetuti, decidi se il componente di importazione debba normalizzarli o segnalare un errore prima di chiedere modifiche alla procedura del grafo.
Definisci la corrispondenza tra identificatori interni dei nodi ed etichette visibili agli utenti, oltre all'ordinamento necessario per un output stabile. Rivedi tali corrispondenze insieme alla modifica proposta. Una coppia di nodi interna corretta può diventare fuorviante se il chiamante la associa alle etichette sbagliate.
SpanSorbus · Aggiornato 2026-10-25