Exercism वेबसाइट के साथ होने वाला सारा इंटरैक्शन अपने आप संभाला जाता है। रिप्रेज़ेंटर की एक ही ज़िम्मेदारी है: एक हल लेना और उसका रिप्रेज़ेंटेशन लौटाना। ज़्यादा जानकारी के लिए परिचय देखिए।
two-fer)।representation.txt फाइल लिखनी चाहिए।representation.json फाइल लिखनी चाहिए।mapping.json फाइल लिखनी चाहिए।हर हल के लिए रिप्रेज़ेंटर को 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: रिप्रेज़ेंटर के वर्ज़न की संख्या (डिफ़ॉल्ट रूप से 1)उदाहरण:
{ "version": 2 }