Tutte le interazioni con il sito di Exercism sono gestite automaticamente. I representer hanno la sola responsabilità di prendere una soluzione e restituirne una rappresentazione. Per maggiori informazioni, consulta l'introduzione.
two-fer).representation.txt nella directory di output.representation.json nella directory di output.mapping.json nella directory di output.Il representer ottiene il 100% delle risorse della macchina per una finestra di 20 secondi per ogni soluzione. Dopo 20 secondi, il processo viene interrotto e segnala un timeout.
Ti consigliamo vivamente di seguire il nostro documento sulle best practice per le prestazioni per ridurre la probabilità di timeout.
Il file representation.txt contiene una qualche forma di rappresentazione canonica. Questa rappresentazione può assumere molte forme, ma di solito è un 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))))
La rappresentazione potrebbe anche essere semplicemente il codice sorgente (normalizzato):
class PLACEHOLDER_1
def PLACEHOLDER_2
PLACEHOLDER_3 = "foo"
PLACEHOLDER_4 = "foo"
return PLACEHOLDER_3
end
def PLACEHOLDER_3
PLACEHOLDER_1
end
end
Il file mapping.json associa i segnaposto ai loro valori originali:
{
"PLACEHOLDER_1": "TwoFer",
"PLACEHOLDER_2": "two_fer",
"PLACEHOLDER_3": "foo",
"PLACEHOLDER_4": "bar"
}
È importante notare che tutti i nomi identici devono essere sostituiti con lo stesso segnaposto, indipendentemente dallo scope.
Il file representation.json contiene i metadati:
version: il numero di versione del representer (il valore predefinito è 1)Esempio:
{ "version": 2 }