Todas as interações com o site do Exercism são tratadas automaticamente. O representer tem a única responsabilidade de receber uma solução e retornar uma representação dela. Veja a introdução para mais informações.
two-fer).representation.txt no diretório de saída.representation.json no diretório de saída.mapping.json no diretório de saída.O representer recebe 100% dos recursos da máquina por uma janela de 20 segundos por solução. Depois de 20 segundos, o processo é interrompido e reporta um timeout.
Recomendamos fortemente seguir nosso documento de Boas Práticas de Desempenho para reduzir a chance de timeouts.
O arquivo representation.txt contém algum tipo de representação canônica. Essa representação pode assumir muitas formas, mas geralmente é uma 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))))
A representação também pode ser apenas código-fonte (normalizado):
class PLACEHOLDER_1
def PLACEHOLDER_2
PLACEHOLDER_3 = "foo"
PLACEHOLDER_4 = "foo"
return PLACEHOLDER_3
end
def PLACEHOLDER_3
PLACEHOLDER_1
end
end
O arquivo mapping.json mapeia placeholders para seus valores originais:
{
"PLACEHOLDER_1": "TwoFer",
"PLACEHOLDER_2": "two_fer",
"PLACEHOLDER_3": "foo",
"PLACEHOLDER_4": "bar"
}
É importante notar que todos os nomes idênticos devem ser substituídos pelo mesmo placeholder, independentemente do escopo.
O arquivo representation.json contém metadados:
version: o número da versão do representer (o padrão é 1)Exemplo:
{ "version": 2 }