Schreiben Sie ein Programm, das die Syntaxfehlermeldung des Compilers oder Interpreters ausgibt. Die Fehlermeldung sollte irreführend sein, so dass die Codewartenden Tage brauchen, um herauszufinden, dass der Fehler gefälscht wurde. Das bedeutet, Sie sollten dies verschleiern (und Ihre Absichten verbergen). Außerdem muss der Fehler so genau wie möglich sein und sollte korrekt auf den Code verweisen.
Bei kompatiblen Sprachen wird davon ausgegangen, dass Ihr Code-Betreuer compile program.p && ./program
das Programm in der Befehlszeile kompiliert UND ausführt. Dies bedeutet, dass er nicht unterscheiden kann, ob die Ausgabe vom Compiler oder vom Programm selbst stammt. Nehmen Sie außerdem an, dass Ihr Code-Betreuer Syntaxfehlermeldungen aktiviert.
Als Referenz ist hier ein Beispiel, das ich gemacht habe: https://gist.github.com/359604
Der DATA
Abschnitt codiert die Zeichenfolge der Fehlermeldung und den Hash%abcdef
ist die Decodiertabelle. Der Fehler gab Verweise auf die Backslashes aus, wodurch ein Code-Betreuer versucht, die Backslashes zu zählen.
Die Beiträge werden nach folgenden Kriterien bewertet:
- Code hat eine täuschend offensichtliche Absicht
/6
- Der Code gibt den Fehler korrekt wieder
/16
(Ihr Punkt beginnt mit 16 und wird für jede Ungenauigkeit durch die entsprechenden Faktoren dividiert).- Richtige Großschreibung: 4
- Richtige Zeilennummer und Spaltennummer: 4
- Richtiger Wortlaut: 2 für jedes falsche Wort
- Die Zeilennummer, auf die verwiesen wird, führt den Code-Betreuer in die Irre
/3
Beispielsweise,
./pythontest1.py: line 7: syntax error near token `('
./pythontest1.py: line 7: ` x=input("Enter a number:") #Number input'
Erhält 8 (16/2) für die Richtigkeit, wenn "Unerwartet" vor "Token" fehlt, wird ein normaler Python-Interpreter angezeigt
./pythontest1.py: line 7: syntax error near unexpected token `('
./pythontest1.py: line 7: ` x=input("Enter a number:") #Number input'
Wenn Ihr Punkt "Code reproduziert Fehler korrekt" unter 1 liegt, wird Ihre Eingabe disqualifiziert.
Im Falle eines Unentschieden werde ich zusätzliche Bewertungsfaktoren aufstellen.