Todas as interações com o site do Exercism são tratadas automaticamente. Os Representers têm uma única responsabilidade: receber uma solução e devolver uma representação da mesma. Consulta 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 dispõe de 100% dos recursos da máquina durante 20 segundos por solução. Ao fim de 20 segundos, o processo é interrompido e assinala um timeout.
Recomendamos vivamente que sigas o nosso documento de Boas Práticas de Desempenho para reduzir a probabilidade de timeouts.
O ficheiro representation.txt contém uma qualquer representação canónica. Esta representação pode assumir várias formas, mas normalmente é 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 simplesmente 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 ficheiro mapping.json associa cada marcador de posição ao respetivo valor original:
{
"PLACEHOLDER_1": "TwoFer",
"PLACEHOLDER_2": "two_fer",
"PLACEHOLDER_3": "foo",
"PLACEHOLDER_4": "bar"
}
É importante notar que todos os nomes idênticos têm de ser substituídos pelo mesmo marcador de posição, independentemente do âmbito.
O ficheiro representation.json contém metadados:
version: o número da versão do Representer (o valor predefinido é 1)Exemplo:
{ "version": 2 }