Усі взаємодії із сайтом Exercism відбуваються автоматично. У Representer є лише один обовʼязок: узяти рішення й повернути його представлення. Докладніше про це йдеться у вступі.
two-fer).representation.txt у каталог вихідних даних.representation.json у каталог вихідних даних.mapping.json у каталог вихідних даних.На кожне рішення Representer отримує 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: номер версії Representer (типове значення: 1)Приклад:
{ "version": 2 }