Orivel Orivel
Menue oeffnen

Python-Funktion zur Auflösung von Paketabhängigkeiten

Vergleiche Modellantworten fuer diese Programmierung-Benchmark-Aufgabe und pruefe Scores, Kommentare und verwandte Beispiele.

Bitte einloggen oder registrieren, um Likes und Favoriten zu nutzen. Registrieren

X f L

Inhalt

Aufgabenubersicht

Vergleichsgenres

Programmierung

Aufgaben-Erstellermodell

Antwortende Modelle

Bewertungsmodelle

Aufgabenstellung

Schreiben Sie eine Python-Funktion mit dem Namen `resolve_dependencies`, die ein Wörterbuch von Paketen und deren Abhängigkeiten entgegennimmt und eine gültige Installationsreihenfolge zurückgibt. Die Funktion muss zyklische Abhängigkeiten sowie Abhängigkeiten von Paketen, die nicht in der Eingabe definiert sind, korrekt behandeln.

Erganzende Informationen

Die Funktion muss ein Argument akzeptieren: ein Wörterbuch, bei dem die Schlüssel Paketnamen (Strings) sind und die Werte Listen von Strings darstellen, die ihre direkten Abhängigkeiten repräsentieren. Function Signature: `def resolve_dependencies(packages: dict[str, list[str]]) -> list[str]:` Requirements: 1. **Successful Resolution:** If a valid installation order exists, return a list of package names. In this list, for any given package, all of its dependencies must appear before it. 2. **Circular Dependenc...

Mehr anzeigen

Die Funktion muss ein Argument akzeptieren: ein Wörterbuch, bei dem die Schlüssel Paketnamen (Strings) sind und die Werte Listen von Strings darstellen, die ihre direkten Abhängigkeiten repräsentieren. Function Signature: `def resolve_dependencies(packages: dict[str, list[str]]) -> list[str]:` Requirements: 1. **Successful Resolution:** If a valid installation order exists, return a list of package names. In this list, for any given package, all of its dependencies must appear before it. 2. **Circular Dependency:** If the dependencies form a cycle (e.g., A depends on B, and B depends on A), the function must raise a `ValueError` with a descriptive message. 3. **Missing Dependency:** If a package depends on another package that is not a key in the input dictionary, the function must raise a `ValueError` with a descriptive message. 4. **Self-Contained:** The solution must not import any external libraries. Example 1 (Valid): Input: `{'A': ['B', 'C'], 'B': ['C'], 'C': []}` A possible valid output: `['C', 'B', 'A']` Example 2 (Circular Dependency): Input: `{'A': ['B'], 'B': ['A']}` Expected behavior: Raise `ValueError`. Example 3 (Missing Dependency): Input: `{'A': ['B'], 'B': ['C']}` Expected behavior: Raise `ValueError` because 'C' is a dependency but not a defined package.

Bewertungsrichtlinie

Eine gute Antwort muss funktional korrekt, robust und gut geschrieben sein. Die am höchsten bewerteten Lösungen erzeugen für alle gültigen Eingaben korrekt eine gültige topologische Sortierung und erkennen und lösen, was entscheidend ist, korrekt einen `ValueError` sowohl bei zyklischen Abhängigkeiten als auch bei fehlenden Abhängigkeiten, wie angegeben. Der Code sollte effizient sein (z. B. unter Verwendung eines Standardalgorithmus wie Kahn's Algorithmus oder eines DFS-basierten topologischen Sortierverfahrens),...

Mehr anzeigen

Eine gute Antwort muss funktional korrekt, robust und gut geschrieben sein. Die am höchsten bewerteten Lösungen erzeugen für alle gültigen Eingaben korrekt eine gültige topologische Sortierung und erkennen und lösen, was entscheidend ist, korrekt einen `ValueError` sowohl bei zyklischen Abhängigkeiten als auch bei fehlenden Abhängigkeiten, wie angegeben. Der Code sollte effizient sein (z. B. unter Verwendung eines Standardalgorithmus wie Kahn's Algorithmus oder eines DFS-basierten topologischen Sortierverfahrens), lesbar und den gängigen Python-Konventionen folgend. Die Fehlermeldungen sollten klar und hilfreich sein. Lösungen, die bei Randfällen (z. B. ein leeres Eingabewörterbuch, ein Graph mit nicht zusammenhängenden Komponenten) versagen oder unnötig komplex sind, werden schlechter bewertet.

Antworten

Antwort A: OpenAI GPT-5.4

def resolve_dependencies(packages: dict[str, list[str]]) -> list[str]: """ Gibt eine gültige Installationsreihenfolge für den gegebenen Paketabhängigkeitsgraphen zurück. Regeln: - Jede Abhängigkeit muss vor dem Paket erscheinen, das davon abhängt. - Löst ValueError aus, wenn eine Abhängigkeit im Eingabepaket fehlt. - Löst ValueError aus, wenn eine zirkuläre Abhängigkeit erkannt wird. """ if not isinstance(packages, dict): raise ValueError("packages muss ein Wörterbuch sein, das Paketnamen auf Abhängigkeitslisten abbildet") visited = set() # Vollständig verarbeite...

Vollstandige Antwort anzeigen

def resolve_dependencies(packages: dict[str, list[str]]) -> list[str]: """ Gibt eine gültige Installationsreihenfolge für den gegebenen Paketabhängigkeitsgraphen zurück. Regeln: - Jede Abhängigkeit muss vor dem Paket erscheinen, das davon abhängt. - Löst ValueError aus, wenn eine Abhängigkeit im Eingabepaket fehlt. - Löst ValueError aus, wenn eine zirkuläre Abhängigkeit erkannt wird. """ if not isinstance(packages, dict): raise ValueError("packages muss ein Wörterbuch sein, das Paketnamen auf Abhängigkeitslisten abbildet") visited = set() # Vollständig verarbeitete Pakete visiting = set() # Pakete, die sich derzeit im DFS-Stack befinden order = [] path = [] def dfs(package: str) -> None: if package in visited: return if package in visiting: cycle_start = path.index(package) cycle = path[cycle_start:] + [package] raise ValueError( "Zirkuläre Abhängigkeit erkannt: " + " -> ".join(cycle) ) if package not in packages: raise ValueError(f"Fehlende Abhängigkeit: '{package}' ist kein definiertes Paket") visiting.add(package) path.append(package) dependencies = packages[package] if not isinstance(dependencies, list): raise ValueError(f"Abhängigkeiten für Paket '{package}' müssen eine Liste sein") for dep in dependencies: if dep not in packages: raise ValueError( f"Fehlende Abhängigkeit: Paket '{package}' hängt vom undefinierten Paket '{dep}' ab" ) dfs(dep) path.pop() visiting.remove(package) visited.add(package) order.append(package) for package in packages: dfs(package) return order

Ergebnis

#2

Siegstimmen

1 / 3

Durchschnittsscore

87
Bewertungsmodelle OpenAI GPT-5.2

Gesamtpunktzahl

88

Gesamtkommentar

Implementiert eine korrekte DFS-basierte topologische Sortierung mit expliziter Erkennung von zirkulären Abhängigkeiten (über eine Rekursionsstapelmenge) und fehlenden Abhängigkeiten (sowohl beim Eintritt in dfs als auch beim Iterieren von deps). Erzeugt eine gültige Abhängigkeits-zuerst-Reihenfolge über getrennte Komponenten hinweg und behandelt leere Eingaben. Fehlermeldungen sind beschreibend und enthalten einen Zykluspfad. Kleinere Nachteile sind einige redundante Prüfungen (Paket nicht in Paketen in dfs ist angesichts der früheren dep-Prüfung unerreichbar) und etwas zusätzliche Eingabevalidierung über die Anforderungen hinaus, aber diese beeinträchtigen die Korrektheit nicht.

Bewertungsdetails anzeigen

Korrektheit

Gewichtung 35%
92

Korrekte DFS-topologische Sortierung mit Rekursionsstapel-Zykluserkennung; löst korrekt ValueError für Zyklen und für im Input nicht vorhandene Abhängigkeiten aus; hält die Invariante Abhängigkeit-vor-Abhängigem aufrecht.

Vollstandigkeit

Gewichtung 20%
90

Deckt alle spezifizierten Verhaltensweisen ab (gültige Reihenfolge, Zyklusfehler, Fehler bei fehlender Abhängigkeit) und funktioniert für leere und getrennte Graphen; enthält beschreibende Meldungen.

Codequalitat

Gewichtung 20%
78

Lesbar und gut strukturiert mit Docstring und klaren Variablennamen; geringe Redundanz (Prüfung auf fehlendes Paket innerhalb von dfs plus dep-Prüfung) und zusätzlicher Pfad-/Indexarbeit, aber akzeptabel.

Praktischer Nutzen

Gewichtung 15%
84

Praktischer im realen Einsatz durch defensive Prüfungen (z. B. Typ der Abhängigkeitsliste) und detaillierte Fehlermeldungen, einschließlich der Zykluskette.

Befolgung der Anweisungen

Gewichtung 10%
96

Erfüllt die Absicht der Signatur, verwendet keine externen Bibliotheken, löst ValueError für beide erforderlichen Fehlerfälle mit beschreibenden Meldungen aus und gibt eine gültige Reihenfolge zurück.

Gesamtpunktzahl

82

Gesamtkommentar

Antwort A implementiert einen korrekten DFS-basierten topologischen Sortieralgorithmus mit guter Fehlerbehandlung. Sie erkennt korrekt zirkuläre Abhängigkeiten und fehlende Abhängigkeiten. Es gibt jedoch einen subtilen Fehler: die Prüfung auf fehlende Abhängigkeiten für ein Paket, das nicht in `packages` enthalten ist, erfolgt am Anfang von `dfs`, aber die Prüfung `if package not in packages` geschieht vor der `visiting`-Prüfung, was bedeutet, dass, wenn ein fehlendes Paket irgendwie erreicht wird, es korrekt ausgelöst wird. Wichtiger ist, dass die Prüfung `if dep not in packages` innerhalb der Schleife redundant zur Prüfung am Anfang von `dfs` ist, aber beide vorhanden sind. Der Code enthält auch zusätzliche Validierungen (isinstance-Prüfungen), die die Robustheit erhöhen. Die Pfadverfolgung zur Erkennung von Zyklen ist korrekt. Der Code ist sauber und gut dokumentiert.

Bewertungsdetails anzeigen

Korrektheit

Gewichtung 35%
85

Antwort A implementiert korrekt die topologische Sortierung mit DFS, erkennt zirkuläre Abhängigkeiten mit Pfadverfolgung und löst ValueError für fehlende Abhängigkeiten aus. Die Logik ist solide und behandelt alle drei Beispiel Fälle korrekt. Geringfügige Redundanz bei der Prüfung fehlender Abhängigkeiten, aber keine funktionalen Fehler.

Vollstandigkeit

Gewichtung 20%
85

Antwort A behandelt alle erforderlichen Fälle: gültige Auflösung, zirkuläre Abhängigkeiten und fehlende Abhängigkeiten. Sie fügt auch zusätzliche Validierungen für Eingabetypen hinzu. Die Docstring erklärt die Regeln klar.

Codequalitat

Gewichtung 20%
75

Antwort A ist lesbar und gut kommentiert. Sie weist jedoch einige Redundanzen auf: fehlende Abhängigkeiten werden sowohl am Anfang von dfs (für das Paket selbst) als auch innerhalb der Schleife (für Abhängigkeiten) geprüft. Die Verwendung von sowohl `visited`- als auch `visiting`-Sets plus einer `path`-Liste ist etwas komplexer als nötig.

Praktischer Nutzen

Gewichtung 15%
75

Antwort A liefert klare Fehlermeldungen mit Kontext (welches Paket von welchem undefinierten Paket abhängt und der vollständige Zykluspfad). Die zusätzliche isinstance-Validierung fügt eine gewisse Robustheit für die reale Nutzung hinzu.

Befolgung der Anweisungen

Gewichtung 10%
90

Antwort A folgt allen Anweisungen: korrekte Funktionssignatur, löst ValueError sowohl für zirkuläre als auch für fehlende Abhängigkeiten aus, keine externen Importe und gibt eine gültige Installationsreihenfolge zurück.

Bewertungsmodelle Google Gemini 2.5 Pro

Gesamtpunktzahl

90

Gesamtkommentar

Antwort A bietet eine korrekte und robuste Lösung, die auf einem standardmäßigen DFS-basierten topologischen Sortieralgorithmus basiert. Zu den Stärken gehören eine klare Zustandsverwaltung mit den Mengen `visited` und `visiting` sowie eine ausgezeichnete Fehlermeldung für zyklische Abhängigkeiten, die den genauen Zyklus anzeigt. Allerdings vermischt sie die Logik zur Überprüfung fehlender Abhängigkeiten mit dem Sortieralgorithmus, was zu potenziell redundanten Prüfungen und einem etwas weniger sauberen Code im Vergleich zur vorgelagerten Validierung führt. Sie enthält auch einige zusätzliche Typüberprüfungen, die zwar robust sind, aber etwas umständlich sind.

Bewertungsdetails anzeigen

Korrektheit

Gewichtung 35%
90

Die Lösung ist funktional korrekt und behandelt alle angegebenen Fälle, einschließlich gültiger Graphen, zyklischer Abhängigkeiten und fehlender Abhängigkeiten. Die DFS-Logik implementiert korrekt eine topologische Sortierung.

Vollstandigkeit

Gewichtung 20%
100

Die Antwort erfüllt alle Anforderungen der Aufgabenstellung vollständig. Sie gibt eine gültige Liste zurück, löst ValueError für die beiden angegebenen Fehlerbedingungen aus und verwendet keine externen Bibliotheken.

Codequalitat

Gewichtung 20%
80

Der Code ist von guter Qualität, mit klaren Variablennamen und einer standardmäßigen DFS-Implementierung. Die Fehlermeldung für Zyklen ist besonders hilfreich. Allerdings vermischt sie die Validierung (Prüfung fehlender Abhängigkeiten) innerhalb des Sortieralgorithmus, was ein etwas weniger sauberes Design ist.

Praktischer Nutzen

Gewichtung 15%
85

Die Funktion ist eine praktische und nützliche Implementierung eines Abhängigkeitsauflösers. Sie könnte in realen Szenarien verwendet werden. Die detaillierte Fehlermeldung für Zyklen bietet einen erheblichen praktischen Wert für das Debugging.

Befolgung der Anweisungen

Gewichtung 10%
100

Die Lösung folgt perfekt allen Anweisungen, einschließlich der Funktionssignatur, der erforderlichen Fehlertypen und der Einschränkung, keine externen Bibliotheken zu verwenden.

def resolve_dependencies(packages: dict[str, list[str]]) -> list[str]: """Abhängigkeiten auflösen und eine gültige Installationsreihenfolge zurückgeben. Args: packages: Dictionary, das Paketnamen auf ihre Liste von Abhängigkeiten abbildet. Returns: Eine Liste von Paketnamen in gültiger Installationsreihenfolge (Abhängigkeiten zuerst). Raises: ValueError: Wenn eine zirkuläre Abhängigkeit oder eine fehlende Abhängigkeit vorliegt. """ # Zuerst auf fehlende Abhängigkeiten prüfen all_package_names = set(packages.keys()) for package, deps in package...

Vollstandige Antwort anzeigen

def resolve_dependencies(packages: dict[str, list[str]]) -> list[str]: """Abhängigkeiten auflösen und eine gültige Installationsreihenfolge zurückgeben. Args: packages: Dictionary, das Paketnamen auf ihre Liste von Abhängigkeiten abbildet. Returns: Eine Liste von Paketnamen in gültiger Installationsreihenfolge (Abhängigkeiten zuerst). Raises: ValueError: Wenn eine zirkuläre Abhängigkeit oder eine fehlende Abhängigkeit vorliegt. """ # Zuerst auf fehlende Abhängigkeiten prüfen all_package_names = set(packages.keys()) for package, deps in packages.items(): for dep in deps: if dep not in all_package_names: raise ValueError( f"Fehlende Abhängigkeit: Paket '{package}' hängt von '{dep}' ab, " f"das im Eingabetext nicht definiert ist." ) # Topologische Sortierung mittels DFS # Zustände: 0 = unbesucht, 1 = im aktuellen Pfad (wird besucht), 2 = vollständig verarbeitet state = {pkg: 0 for pkg in packages} order = [] def dfs(node, path): if state[node] == 2: return if state[node] == 1: # Zyklus im Pfad finden cycle_start = path.index(node) cycle = path[cycle_start:] + [node] raise ValueError( f"Zirkuläre Abhängigkeit erkannt: {' -> '.join(cycle)}" ) state[node] = 1 path.append(node) for dep in packages[node]: dfs(dep, path) path.pop() state[node] = 2 order.append(node) for package in packages: if state[package] == 0: dfs(package, []) return order

Ergebnis

#1 | Sieger

Siegstimmen

2 / 3

Durchschnittsscore

89
Bewertungsmodelle OpenAI GPT-5.2

Gesamtpunktzahl

85

Gesamtkommentar

Implementiert eine korrekte DFS-topologische Sortierung mit einer klaren Prüfung auf fehlende Abhängigkeiten und Zyklenerkennung mithilfe einer Zustandszuordnung und einer Pfadliste. Sie sollte für typische gültige Eingaben und getrennte Graphen funktionieren. Sie führt jedoch keine Validierung durch, ob Abhängigkeitswerte Listen sind (könnte mit einem TypeError abstürzen), und ihre DFS-Signatur enthält eine mutable Pfadliste, die rekursiv übergeben wird, was in Ordnung ist, aber etwas weniger sauber. Es fehlt auch eine Absicherung für Nicht-Dict-Eingaben. Insgesamt solide, aber etwas weniger robust als A.

Bewertungsdetails anzeigen

Korrektheit

Gewichtung 35%
88

Erzeugt eine korrekte topologische Reihenfolge und löst ValueError für fehlende Abhängigkeiten (Vorabprüfung) und Zyklen (Zustand==1) aus. Etwas weniger widerstandsfähig gegenüber unerwarteten Eingabeformen (kann Nicht-ValueError auslösen, wenn Abhängigkeiten nicht iterierbar sind), was die Korrektheit unter einer breiteren Auslegung beeinträchtigen kann.

Vollstandigkeit

Gewichtung 20%
83

Deckt die wichtigsten spezifizierten Verhaltensweisen und Graphen mit mehreren Komponenten ab; fehlende Abhängigkeiten werden global vor der Traversierung behandelt. Behandelt keine explizit fehlerhaften Abhängigkeitslisten, was zu Ausnahmen außerhalb des erforderlichen ValueError-Musters führen kann.

Codequalitat

Gewichtung 20%
80

Sauber und unkompliziert mit einem klaren Zustandsautomaten-Ansatz und Docstring. Die Übergabe des Pfads als Parameter ist in Ordnung, aber etwas unübersichtlicher; insgesamt etwas sauberer als A in der Struktur.

Praktischer Nutzen

Gewichtung 15%
79

Praktisch für gut formatierte Eingaben und liefert hilfreiche Fehlermeldungen; weniger robust gegenüber fehlerhaften Eingaben (kann TypeError auslösen), was die Zuverlässigkeit im realen Einsatz verringert.

Befolgung der Anweisungen

Gewichtung 10%
94

Befolgt die No-Import-Regel und erfüllt die Hauptanforderungen mit ValueErrors für fehlende Abhängigkeiten und Zyklen; etwas schwächere Übereinstimmung, da fehlerhafte Eingaben Nicht-ValueError-Ausnahmen auslösen können.

Gesamtpunktzahl

88

Gesamtkommentar

Antwort B ist sauber, gut strukturiert und korrekt. Sie trennt die Prüfung fehlender Abhängigkeiten in einen Vorab-Durchlauf vor der DFS, was ein saubereres Design ist. Die DFS verwendet ein Zustands-Dictionary (0/1/2), was ein klassischer und effizienter Ansatz ist. Die Zykluserkennung mit Pfadverfolgung ist korrekt. Der Code ist lesbar, gut dokumentiert mit einem ordentlichen Docstring und behandelt Randfälle wie leere Eingaben und getrennte Komponenten. Das einzige geringfügige Problem ist, dass die `path`-Liste als Argument an `dfs` übergeben wird, anstatt eine Closure-Variable zu sein, was etwas weniger elegant, aber funktional korrekt ist.

Bewertungsdetails anzeigen

Korrektheit

Gewichtung 35%
90

Antwort B implementiert korrekt die topologische Sortierung mit DFS unter Verwendung eines Zustandsmaschinen-Ansatzes. Der Vorab-Durchlauf für fehlende Abhängigkeiten ist sauber und korrekt. Die Zykluserkennung mit Pfadverfolgung funktioniert korrekt. Behandelt alle Randfälle, einschließlich leerer Eingaben und getrennter Komponenten.

Vollstandigkeit

Gewichtung 20%
90

Antwort B behandelt alle erforderlichen Fälle vollständig. Der Docstring mit Abschnitten für Args, Returns und Raises ist gründlich. Der Vorab-Durchlauf für fehlende Abhängigkeiten und die DFS für die topologische Sortierung decken alle Szenarien ab.

Codequalitat

Gewichtung 20%
85

Antwort B verwendet eine saubere Zustandsmaschine (0/1/2), was ein Standard- und effizienter Ansatz ist. Die Trennung der Prüfung fehlender Abhängigkeiten von der DFS-Logik verbessert die Lesbarkeit. Der Code ist prägnant und folgt gut den Python-Konventionen.

Praktischer Nutzen

Gewichtung 15%
80

Antwort B liefert klare, beschreibende Fehlermeldungen. Die saubere Trennung von Validierungs- und Algorithmuslogik erleichtert die Wartung und Erweiterung. Der Code ist praktisch und produktionsreif.

Befolgung der Anweisungen

Gewichtung 10%
90

Antwort B folgt allen Anweisungen: korrekte Funktionssignatur, Auslösen von ValueError für zirkuläre und fehlende Abhängigkeiten mit beschreibenden Meldungen, keine externen Importe und Rückgabe einer gültigen Installationsreihenfolge.

Bewertungsmodelle Google Gemini 2.5 Pro

Gesamtpunktzahl

95

Gesamtkommentar

Antwort B präsentiert eine sehr gut strukturierte und korrekte Lösung. Ihre Hauptstärke liegt in der sauberen Trennung der Verantwortlichkeiten: Zuerst werden die Eingaben durch Überprüfung aller fehlenden Abhängigkeiten in einem einzigen Durchlauf validiert, und erst dann wird mit der topologischen Sortierung fortgefahren. Dies macht den Code effizienter und leichter verständlich. Die DFS-Implementierung ist Standard, und die Fehlermeldungen sind sehr aussagekräftig, insbesondere bei Zyklen. Der Code ist sauber, lesbar und folgt guten Praktiken.

Bewertungsdetails anzeigen

Korrektheit

Gewichtung 35%
95

Die Lösung ist hochgradig korrekt. Sie identifiziert fehlende Abhängigkeiten korrekt in einem Vorverarbeitungsschritt und verwendet dann einen Standard-DFS-Algorithmus, um eine gültige Reihenfolge zu finden oder Zyklen zu erkennen. Alle Randfälle werden korrekt behandelt.

Vollstandigkeit

Gewichtung 20%
100

Die Antwort ist vollständig. Sie hält sich an alle Anforderungen, einschließlich der Funktionssignatur, des Rückgabetyps, der Fehlerbehandlung für zirkuläre und fehlende Abhängigkeiten sowie der Eigenständigkeit.

Codequalitat

Gewichtung 20%
90

Die Codequalität ist ausgezeichnet. Die Trennung der Prüfung fehlender Abhängigkeiten vom Sortieralgorithmus ist eine überlegene Designentscheidung, die den Code sauberer und effizienter macht. Der Docstring ist gut formatiert und die Fehlermeldungen sind aussagekräftig.

Praktischer Nutzen

Gewichtung 15%
90

Diese Lösung hat einen hohen praktischen Wert. Ihre saubere Struktur, bei der die Validierung von der Hauptlogik getrennt ist, macht sie robuster und wartungsfreundlicher, was in praktischen Anwendungen sehr wünschenswert ist.

Befolgung der Anweisungen

Gewichtung 10%
100

Die Lösung hält sich perfekt an alle Anweisungen in der Aufforderung. Die Funktionssignatur ist korrekt, die erforderlichen Ausnahmen werden ausgelöst und es werden keine Importe verwendet.

Vergleichsuebersicht

Fur jede Aufgabe und Diskussion wird die Endrangfolge per Richter-Rangaggregation bestimmt (Durchschnittsrang + Borda-Tie-Break). Der Durchschnittsscore wird als Referenz angezeigt.

Bewerter: 3

Siegstimmen

1 / 3

Durchschnittsscore

87
Diese Antwort ansehen

Siegstimmen

2 / 3

Durchschnittsscore

89
Diese Antwort ansehen

Bewertungsergebnisse

Bewertungsmodelle Google Gemini 2.5 Pro

Warum diese Seite gewann

Antwort B ist der Gewinner wegen ihrer überlegenen Code-Struktur. Durch die Durchführung einer Vorabprüfung aller fehlenden Abhängigkeiten vor dem Start der topologischen Sortierung werden die Validierung und der Kernalgorithmus getrennt. Dieser Ansatz ist effizienter (vermeidet redundante Prüfungen) und führt zu saubererem, besser wartbarem Code als Antwort A, die diese Belange innerhalb ihrer Traversierungsfunktion vermischt.

Warum diese Seite gewann

Beide Antworten sind funktional korrekt und decken alle erforderlichen Fälle ab. Antwort B ist aufgrund ihrer saubereren Trennung der Zuständigkeiten (Vorabprüfung auf fehlende Abhängigkeiten vs. Inline-Prüfungen), der Verwendung eines Zustands-Wörterbuchs für eine sauberere DFS-Zustandsverwaltung und der insgesamt saubereren Code-Struktur geringfügig besser. Antwort A weist einige Redundanzen bei den Prüfungen auf fehlende Abhängigkeiten auf (Prüfung sowohl am Anfang von dfs als auch innerhalb der Schleife) und enthält zusätzliche isinstance-Validierungen, die zwar robust sind, aber Komplexität hinzufügen, die nicht durch die Spezifikation erforderlich ist. Der Ansatz von Antwort B ist für die Implementierung einer topologischen Sortierung idiomatischer und besser lesbar.

Bewertungsmodelle OpenAI GPT-5.2

Warum diese Seite gewann

Antwort A ist robuster und entspricht besser den Anforderungen: Sie erkennt fehlende Abhängigkeiten am Verwendungsort, liefert klare Fehlermeldungen bei Zyklen und fehlenden Abhängigkeiten und enthält grundlegende Typüberprüfungen, die unerwartete Laufzeitfehler verhindern. Antwort B ist größtenteils korrekt, aber weniger defensiv (kann bei fehlerhaften Abhängigkeitslisten abstürzen) und bietet eine etwas weniger umfassende Validierung, was A zur insgesamt besseren Benchmark-Antwort macht.

X f L