Exercism 웹사이트와의 모든 상호작용은 자동으로 처리돼요. Representer는 솔루션을 받아 그 표현을 반환하는 단 하나의 책임만 가져요. 더 자세한 내용은 소개를 참고해요.
two-fer).representation.txt 파일을 써야 해요.representation.json 파일을 써야 해요.mapping.json 파일을 써야 해요.Representer는 솔루션마다 20초 동안 시스템 자원을 100% 사용할 수 있어요. 20초가 지나면 프로세스가 중단되고 시간 초과로 보고돼요.
시간 초과가 발생할 가능성을 줄이기 위해 성능 모범 사례 문서를 따르는 것을 적극 권장해요.
representation.txt 파일에는 일종의 표준 표현이 들어 있어요. 이 표현은 여러 형태를 가질 수 있지만, 보통은 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))))
표현이 그냥 (정규화된) 소스 코드일 수도 있어요:
class PLACEHOLDER_1
def PLACEHOLDER_2
PLACEHOLDER_3 = "foo"
PLACEHOLDER_4 = "foo"
return PLACEHOLDER_3
end
def PLACEHOLDER_3
PLACEHOLDER_1
end
end
mapping.json 파일은 플레이스홀더를 원래 값에 매핑해요:
{
"PLACEHOLDER_1": "TwoFer",
"PLACEHOLDER_2": "two_fer",
"PLACEHOLDER_3": "foo",
"PLACEHOLDER_4": "bar"
}
같은 이름은 스코프와 상관없이 모두 같은 플레이스홀더로 바꿔야 한다는 점이 중요해요.
representation.json 파일에는 메타데이터가 들어 있어요:
version: Representer의 버전 번호예요 (기본값은 1)예:
{ "version": 2 }