Az Exercism webhelyével való minden interakció automatikusan történik. A representereknek egyetlen feladata van: átvesznek egy megoldást, és visszaadják annak reprezentációját. További információért lásd a bevezetőt.
two-fer).representation.txt fájlt a kimeneti könyvtárban.representation.json fájlt a kimeneti könyvtárban.mapping.json fájlt a kimeneti könyvtárban.A representer megoldásonként egy 20 másodperces időablakra a gép erőforrásainak 100%-át kapja. 20 másodperc után a folyamat leáll, és időtúllépést jelez.
Nagyon ajánljuk, hogy kövesd a teljesítményre vonatkozó bevált gyakorlatokról szóló dokumentumunkat, hogy csökkentsd az időtúllépések esélyét.
A representation.txt fájl valamilyen kanonikus reprezentációt tartalmaz. Ez a reprezentáció sokféle formát ölthet, de általában egy 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 reprezentáció lehet egyszerűen (normalizált) forráskód is:
class PLACEHOLDER_1
def PLACEHOLDER_2
PLACEHOLDER_3 = "foo"
PLACEHOLDER_4 = "foo"
return PLACEHOLDER_3
end
def PLACEHOLDER_3
PLACEHOLDER_1
end
end
A mapping.json fájl a helyőrzőket rendeli hozzá az eredeti értékeikhez:
{
"PLACEHOLDER_1": "TwoFer",
"PLACEHOLDER_2": "two_fer",
"PLACEHOLDER_3": "foo",
"PLACEHOLDER_4": "bar"
}
Fontos megjegyezni, hogy minden azonos nevet ugyanazzal a helyőrzővel kell helyettesíteni, tekintet nélkül a scope-ra.
A representation.json fájl metaadatokat tartalmaz:
version: a representer verziószáma (alapértelmezésben 1)Példa:
{ "version": 2 }