एक प्रोग्राम या फ़ंक्शन लिखें जो दो इनपुट लेता है:
- एक लिखित संदेश
- अंग्रेजी भाषा का शब्दकोश, जैसा कि इस गितुब फ़ाइल में दिखाई देता है (जिसमें लगभग 60000 शब्द हैं)
और संदेश में वर्तनी त्रुटियों की संख्या को आउटपुट करता है (परिभाषा और परीक्षण मामलों के लिए नीचे देखें)।
आप अपने फ़ंक्शन के लिए एक पैरामीटर के रूप में डिक्शनरी प्राप्त कर सकते हैं, एक पूर्व-परिभाषित फ़ाइल के रूप में जिसे आपका प्रोग्राम अपने कोड में या किसी अन्य समझदार तरीके से हार्ड-कोडित डेटा के रूप में खोजने की उम्मीद करता है।
आपके कोड को कम से कम वर्तनी त्रुटियों के साथ, एक पाठ संदेश की तरह दिखना चाहिए। तो, आप इनपुट के रूप में खुद को खिलाकर अपने कोड के स्कोर की गणना करेंगे।
विजेता कोड है जिसमें सबसे कम स्कोर (न्यूनतम संभव स्कोर 0 है)। यदि समान स्कोर के साथ कई उत्तर हैं, तो विजेता का निर्णय कोड आकार (वर्णों में) द्वारा किया जाता है। यदि दो उत्तर अभी भी बंधे हैं, तो विजेता पहले वाला है।
यदि आवश्यक हो, तो आप पारंपरिक संदेश (1 बाइट "10" या 2 बाइट्स "13 10") और गैर-खाली में एन्कोड किए गए इनपुट संदेश को ASCII (बाइट्स 32 ... 126) मान सकते हैं। हालांकि, यदि आपके कोड में गैर-एएससीआईआई अक्षर हैं, तो उसे गैर-एएससीआईआई इनपुट का भी समर्थन करना चाहिए (ताकि यह अपने स्वयं के स्कोर की गणना कर सके)।
वर्ण निम्न वर्गों में विभाजित हैं:
- अक्षर a ... z और A ... Z
- व्हॉट्सएप (यहां या तो स्पेस कैरेक्टर या न्यूलाइन कैरेक्टर के रूप में परिभाषित)
- विराम चिह्न
.
,
;
:
!
?
- वाक्य न खत्म होने वाली
.
!
?
- वाक्य न खत्म होने वाली
- कचरा (शेष सभी)
एक शब्द को अक्षरों के अनुक्रम के रूप में परिभाषित किया गया है, जो कि अधिकतम है (अर्थात न तो पहले और न ही पत्र के बाद)।
एक वाक्य को वर्णों के एक अधिकतम अनुक्रम के रूप में परिभाषित किया गया है जो वाक्य-अंत नहीं हैं।
यदि यह वर्तनी नियमों में से किसी का उल्लंघन करता है तो एक वर्ण वर्तनी की त्रुटि है:
- एक अक्षर एक डिक्शनरी शब्द से संबंधित होना चाहिए (या, दूसरे शब्दों में: लंबाई एन का प्रत्येक शब्द डिक्शनरी त्रुटियों के रूप में डिक्शनरी काउंट्स में प्रकट नहीं होता है)
- किसी भी प्रारंभिक व्हाट्सएप पात्रों को अनदेखा करते हुए एक वाक्य में पहला चरित्र, एक अपरकेस अक्षर होना चाहिए
- पिछले नियम द्वारा निर्दिष्ट सभी अक्षरों को कम किया जाना चाहिए
- एक विराम चिह्न को केवल एक पत्र या कचरे के बाद अनुमति दी जाती है
- वाक्य-समाप्ति वाले वर्ण के बाद ही एक नई पंक्ति वर्ण की अनुमति दी जाती है
- व्हॉट्सएप पात्रों को संदेश की शुरुआत में और व्हाट्सएप पात्रों के बाद अनुमति नहीं है
- कोई कचरा नहीं होना चाहिए (या, दूसरे शब्दों में: प्रत्येक कचरा वर्ण गणना एक वर्तनी त्रुटि है)
इसके अलावा, अंतिम वाक्य या तो खाली होना चाहिए या वास्तव में एक न्यूलाइन वर्ण से मिलकर होना चाहिए (यानी संदेश को एक वाक्य-अंत वाले चरित्र और एक वैकल्पिक न्यूलाइन के साथ समाप्त होना चाहिए - चलो इसे नियम 8 कहते हैं)।
परीक्षण के मामले (प्रत्येक वर्ण के नीचे एक नियम है जो इसका उल्लंघन करता है; =>
आवश्यक उत्तर के बाद ):
Here is my 1st test case!!
711 4 => 4
main(){puts("Hello World!");}
2 777 883 3 77 78 => 12
This message starts with two spaces
66 8 => 3
What ? No apostrophe's??
4 71 4 => 4
Extra whitespace is BAD!
66 661111111111 66 66333 => 21
Several
lines?
Must be used only to separate sentences.
=> 1 (first linebreak is en error: rule 5)
"Come here," he said.
73 7 => 3 (sentence starts with '"', not 'C')