Erstellung eines benutzerdefinierten Prüfers
Last updated: July 9, 2026
Der benutzerdefinierte Prüfer-Code besteht aus 3 Teilen. Zwei nicht bearbeitbare Teile werden als Kopf- und Fußabschnitt bezeichnet. Der bearbeitbare Teil des benutzerdefinierten Prüfers wird als Körperabschnitt bezeichnet. Der Körperabschnitt hat eine Methode namens run_custom_checker(). Diese Methode nimmt zwei Argumente: ein TestStructure-Objekt und ein ResultStructure-Objekt. Diese Methode wird ausgeführt, nachdem die Einreichung eines Kandidaten ausgeführt wurde. Jeder Testfall bewertet die Ergebnisse der Einreichung des Kandidaten.

Teststruktur
testcase_id
[int] ID des Testfalls
testcase_input_path
[str] Dateipfad zum Testfall-Eingang
testcase_output_path
[str] Dateipfad zur vom Problemlöser generierten Testfall-Ausgabe
testcase_expected_output_path
[str] Dateipfad zur erwarteten Testfall-Ausgabe, die übereinstimmen soll
metadata_file_paths
[list<str>] Dateipfade zu Frage-Metadaten (zusätzliche Dateien, die normalerweise zum Definieren von Trainingssets verwendet werden)
submission_code_path
[str] Dateipfad zum Einreichungscode
testcase_result
[bool] Auf True setzen, wenn die Testfall-Ausgabe mit der erwarteten Testfall-Ausgabe übereinstimmt. Das Übereinstimmen erfolgt Zeile für Zeile
testcase_signal
[int] Exit-Code des Testfallprozesses
testcase_time
[float] Die vom Testfallprozess benötigte Zeit in Sekunden
testcase_memory
[int] Spitzenverbrauch an Speicher des Testfallprozesses in Bytes
data
[str] <Zukünftige Verwendung>
Ergebnisstruktur
result
[bool] Weist das Ergebnis des Testfalls zu. True bedeutet Erfolg. False bedeutet einen Fehler
score
[float] Weist die Punktzahl des Testfalls zu. Normalisiert zwischen 0 und 1
message
[str] Weist die Nachricht des Testfalls zu. Diese Nachricht ist für den Problemlöser sichtbar.
Das Testergebnis wird durch das Setzen der Werte für das ResultStructure-Objekt bestimmt.
Ergebnis: Stellen Sie dies auf True, wenn ein minimaler Grenzwert erreicht wurde, andernfalls auf False. Dies entscheidet, ob Sie diesen Testfall bestanden haben oder nicht.
Punktzahl: Dies ist eine normalisierte Punktzahl, bei der man die Gesamtsumme erhält, und 0,5 würde die Hälfte der Punktzahl darstellen.
Nachricht: Dies ist eine anpassbare Nachricht, die verwendet werden kann, um eine Nachricht bezüglich eines Testergebnisses zu übermitteln, z.B. „Fehlgeschlagen, weil der Grenzwert nicht erreicht wurde."
Hinweis: Bitte drucken Sie in der run_custom_checker-Funktion nichts auf STDOUT.
Benutzerdefinierter Prüfer für eine Liste von 5 Primzahlen unter 100
import re
# Funktion zur Bestimmung, ob die gegebene ganze Zahl eine Primzahl istdef is_prime_number(x):
if x >= 2:
for y in range(2, x):
if not x % y:
return False
else:
return False
return True
def run_custom_checker(t_obj, r_obj):
result_data = ''
try:
result_data = open(t_obj.testcase_output_path, 'r').read()
except IOError:
r_obj.result = False
r_obj.score = 0
r_obj.message = 'Fehler beim Lesen der Ergebnisdatei'
return
# Inhalte der Ergebnisdatei lesen
values = re.split(' |\n', result_data)
# Sicherstellen, dass alle Werte einzigartig sind
uniq_values = set(values)
# Anzahl der Primzahlen zählen
correct_values = 0
for value in uniq_values:
if value and is_prime_number(int(value)):
correct_values = correct_values + 1
# Grenzwertpunktzahl zur Bestimmung des Erfolgs
if correct_values > 3:
r_obj.result = True
else:
r_obj.result = False
r_obj.score = correct_values / 5
r_obj.message = str(correct_values) + ' von 5 Werten sind korrekt'Ergebnis
Hier ist ein ähnlicher benutzerdefinierter Prüfer in Java -https://gist.github.com/patilarpith/7b17b5afb9218f770ebc528747017d25
Bewertung einer ungefähren Lösungsfrage
Ungefähr Lösung Fragen werden automatisch anhand eines benutzerdefinierten Prüfers bewertet. Sie werden wie Programmierfragen ohne benutzerdefinierten Prüfer bewertet, wobei Testfälle zur Bestimmung der Endpunktzahl verwendet werden. Der Fragemacher definiert einzelne Testfälle mit Eingabe-Ausgabe-Paaren für Programmierfragen. Jeder Testfall hat eine zugewiesene Punktzahl, und die insgesamt mögliche Punktzahl ist die Summe aller Testfallpunkte. Wenn ein benutzerdefinierter Prüfer verwendet wird, läuft er einmal für jeden Testfall. Während des Tests wird der Code der Kandidaten mit jedem Testfalleintrag getestet. Der benutzerdefinierte Prüfer bewertet und bewertet jeden Testfall; die endgültige Punktzahl des Kandidaten ist die Summe dieser Punkte.
Verwandter Artikel: