与 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 }