Vor dem Anwenden prüfen
Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
Finde Brücken in einem einfachen ungerichteten Graphen mit höchstens 32 Knoten.
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)Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen.
Prüfe getrennte Komponenten und Zyklen und lehne doppelte Kanten, Schleifen und ungültige Endpunkte ohne Eingabeänderung ab.
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 ist eine Programmierumgebung für Windows zur Untersuchung von Konnektivitätslogik im Kontext realer Quelldateien. Beschreiben Sie zuerst die Entscheidung, die Ihre Anwendung aus dem Graphergebnis ableitet. Lassen Sie das verbundene Modell Eingabedarstellung und Verbraucher untersuchen, bevor Sie eine Änderung an Traversierung oder Ausgabe verlangen.
Eine nützliche Aufgabe könnte mit bridge_edges.py eine Kante untersuchen, deren Entfernung einen zusammenhängenden Teil eines Testgraphen trennt. Nehmen Sie zum Vergleich einen Graphen mit Zyklus auf und geben Sie die erwartete Kantenliste an. Prüfen Sie neben der Implementierung die Annahmen eines einfachen, ungerichteten Graphen, damit die vorgeschlagene Änderung nicht stillschweigend eine andere Eingabeart akzeptiert.
Die Softwarearbeit geht nach der Rückgabe der Routine weiter. Untersuchen Sie, wie der Aufrufer Knoten benennt, Kanten darstellt und zurückgewiesene Daten behandelt, und führen Sie Ihre Projektprüfungen mit unzusammenhängenden und leeren Testgraphen aus. Binden Sie die Prüfung an diese beobachtbaren Ergebnisse. Eine korrekte Grapherklärung belegt nicht, dass die Anwendung ihre tatsächlichen Daten in die erwartete Darstellung überführt.
SpanSorbus verbindet sich über unterstützte OpenAI-kompatible oder Anthropic-Endpunkte, bei Bedarf mit Zugangsdaten. Wählen Sie ein KI-Modell ohne Zensur, wenn der Endpunkt eines bereitstellt, und prüfen Sie Einschränkungen und verfügbare Werkzeuge des Anbieters. Kontextgrenzen hängen von Modell und Server ab; liefern Sie daher einen begrenzten Testfall und die relevanten Verbraucher für ein gezieltes Programmiergespräch.
Prüfen Sie die genaue Graphdefinition und die Entscheidung Ihrer Anwendung. Verwenden Sie einen Testfall mit unabhängig formuliertem Erwartungsergebnis. Untersuchen Sie Codeannahmen zu Richtung, parallelen Kanten und Selbstschleifen, bevor Sie eine informelle Grapherklärung in eine Softwareanforderung übertragen.
Die Anwendung kann mehrere getrennte Komponenten mit jeweils relevanten Kanten enthalten. Eine Traversierung, die bei einem Knoten beginnt, kann die anderen übersehen. Nehmen Sie einen Testfall mit mehreren Komponenten auf und vergleichen Sie die vollständige Ausgabe, nicht nur die erste erwartete Kante.
Prüfen Sie zuerst den Vertrag für zulässige Eingaben. Das Beispiel erwartet einen einfachen Graphen und weist Duplikate zurück. Enthalten importierte Daten wiederholte Kanten, entscheiden Sie vor Änderungen der Graphroutine, ob der Import sie normalisieren oder einen Fehler melden soll.
Definieren Sie die Zuordnung interner Knotenkennungen zu sichtbaren Bezeichnungen sowie eine gegebenenfalls für stabile Ausgabe nötige Reihenfolge. Prüfen Sie diese Zuordnungen mit der vorgeschlagenen Änderung. Ein korrektes internes Kantenpaar kann irreführend werden, wenn der Aufrufer es mit falschen Bezeichnungen verbindet.
SpanSorbus · Aktualisiert 2026-10-25