Alle Interaktionen mit der Exercism-Website werden automatisch abgewickelt. Representer haben die einzige Aufgabe, eine Lösung zu nehmen und eine Repräsentation davon zurückzugeben. Weitere Informationen findest du in der Einführung.
two-fer).representation.txt-Datei in das Ausgabeverzeichnis schreiben.representation.json-Datei in das Ausgabeverzeichnis schreiben.mapping.json-Datei in das Ausgabeverzeichnis schreiben.Der Representer bekommt pro Lösung für ein Zeitfenster von 20 Sekunden 100 % der Maschinenressourcen. Nach 20 Sekunden wird der Prozess angehalten und meldet eine Zeitüberschreitung.
Wir empfehlen dir dringend, unser Dokument zu Best Practices für die Performance zu befolgen, um die Wahrscheinlichkeit von Zeitüberschreitungen zu verringern.
Die representation.txt-Datei enthält eine Art kanonische Repräsentation. Diese Repräsentation kann viele Formen annehmen, ist aber normalerweise ein AST:
s(:class,
s(:const, nil, :PLACEHOLDER_1), nil,
s(:begin,
s(:def, :PLACEHOLDER_2,
s(:args),
s(:begin,
s(:lvasgn, :PLACEHOLDER_3,
s(:str, "foo")),
s(:lvasgn, :PLACEHOLDER_4,
s(:str, "foo")),
s(:return,
s(:lvar, :PLACEHOLDER_3)))),
s(:def, :PLACEHOLDER_3,
s(:args),
s(:const, nil, :PLACEHOLDER_1))))
Die Repräsentation kann auch einfach (normalisierter) Quellcode sein:
class PLACEHOLDER_1
def PLACEHOLDER_2
PLACEHOLDER_3 = "foo"
PLACEHOLDER_4 = "foo"
return PLACEHOLDER_3
end
def PLACEHOLDER_3
PLACEHOLDER_1
end
end
Die mapping.json-Datei ordnet Platzhalter ihren ursprünglichen Werten zu:
{
"PLACEHOLDER_1": "TwoFer",
"PLACEHOLDER_2": "two_fer",
"PLACEHOLDER_3": "foo",
"PLACEHOLDER_4": "bar"
}
Wichtig ist, dass alle identischen Namen durch denselben Platzhalter ersetzt werden müssen, unabhängig vom Gültigkeitsbereich.
Die representation.json-Datei enthält Metadaten:
version: die Versionsnummer des Representers (Standardwert ist 1)Beispiel:
{ "version": 2 }