تتم كل التفاعلات مع موقع Exercism تلقائيًا. تقع على المُمثِّل مسؤولية واحدة: أن يأخذ حلًّا ويُرجع تمثيلًا له. راجع المقدمة لمزيد من المعلومات.
two-fer).representation.txt في مجلد الإخراج.representation.json في مجلد الإخراج.mapping.json في مجلد الإخراج.يحصل المُمثِّل على 100% من موارد الجهاز خلال نافذة مدتها 20 ثانية لكل حل. بعد مرور 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: رقم إصدار المُمثِّل (القيمة الافتراضية 1)مثال:
{ "version": 2 }