Όλες οι αλληλεπιδράσεις με τον ιστότοπο του Exercism γίνονται αυτόματα. Οι Representers έχουν μία μόνο ευθύνη: να παίρνουν μια λύση και να επιστρέφουν μια αναπαράστασή της. Δες την εισαγωγή για περισσότερες πληροφορίες.
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 αντιστοιχίζει τα placeholders στις αρχικές τους τιμές:
{
"PLACEHOLDER_1": "TwoFer",
"PLACEHOLDER_2": "two_fer",
"PLACEHOLDER_3": "foo",
"PLACEHOLDER_4": "bar"
}
Είναι σημαντικό να σημειώσεις ότι όλα τα ίδια ονόματα πρέπει να αντικαθίστανται από το ίδιο placeholder, ανεξάρτητα από την εμβέλεια.
Το αρχείο representation.json περιέχει μεταδεδομένα:
version: ο αριθμός έκδοσης του Representer (προεπιλογή το 1)Παράδειγμα:
{ "version": 2 }