ट्रैक
/
Haskell
Haskell
/
अभ्यास
/
शब्दों की गिनती
शब्दों की गिनती

शब्दों की गिनती

मध्यम

परिचय

आप हाई स्कूल के छात्रों को विदेशी भाषा के रूप में अंग्रेज़ी पढ़ाते हैं।

आपने तय किया है कि आपका पूरा पाठ्यक्रम टीवी शो पर आधारित होगा।

आपको यह देखना है कि कौन-कौन से शब्द इस्तेमाल होते हैं और वे कितनी बार दोहराए जाते हैं।

इससे आप शुरू करने के लिए सबसे आसान शो चुन सकेंगे। साथ ही, समय के साथ आप कठिनाई धीरे-धीरे बढ़ा सकेंगे।

निर्देश

आपका काम यह गिनना है कि किसी नाटक के सबटाइटल में हर शब्द कितनी बार आता है।

इन नाटकों के सबटाइटल में सिर्फ ASCII अक्षर इस्तेमाल होते हैं।

इन नाटकों के पात्र अक्सर अनौपचारिक अंग्रेज़ी बोलते हैं और they're या it's जैसे संक्षिप्त रूप इस्तेमाल करते हैं। हालाँकि ये संक्षिप्त रूप दो शब्दों से बनते हैं (जैसे we are), फिर भी संक्षिप्त रूप (we're) को एक ही शब्द माना जाता है।

शब्दों को किसी भी तरह के विराम चिह्न (जैसे ":", "!", या "?") या व्हाइटस्पेस (जैसे "\t", "\n", या " ") से अलग किया जा सकता है। सिर्फ एक ही विराम चिह्न शब्दों को अलग नहीं करता, और वह है संक्षिप्त रूपों में आने वाली एपॉस्ट्रॉफी।

संख्याओं को भी शब्द माना जाता है। अगर सबटाइटल में It costs 100 dollars. लिखा हो, तो 100 अपना अलग शब्द होगा।

शब्दों में छोटे और बड़े अक्षरों का कोई अंतर नहीं देखा जाता। जैसे, नीचे दिए वाक्य में you शब्द तीन बार आता है:

You come back, you hear me? DO YOU HEAR ME?

नतीजों में शब्दों की गिनती किस क्रम में है, इससे कोई अंतर नहीं पड़ता।

यहाँ एक उदाहरण दिया गया है जिसमें ऊपर बताए गए कई पहलू शामिल हैं:

  • साधारण शब्द
  • संक्षिप्त रूप
  • संख्याएँ
  • ऐसे शब्द जिनमें छोटे और बड़े अक्षरों का अंतर नहीं पड़ता
  • शब्दों को अलग करने वाले विराम चिह्न (एपॉस्ट्रॉफी समेत)
  • शब्दों को अलग करने वाले व्हाइटस्पेस के अलग-अलग रूप

"That's the password: 'PASSWORD 123'!", cried the Special Agent.\nSo I fled.

इस सबटाइटल की मैपिंग यह होगी:

123: 1
agent: 1
cried: 1
fled: 1
i: 1
password: 2
so: 1
special: 1
that's: 1
the: 2

संकेत

इस अभ्यास को पूरा करने के लिए आपको wordCount फंक्शन बनाना है, जो एक टेक्स्ट लेता है और बताता है कि हर शब्द कितनी बार आता है।

अगर आप यह अभ्यास पहली बार हल कर रहे हैं, तो बेहतर होगा कि आप दिए गए सिग्नेचर का ही पालन करें:

wordCount :: String -> [(String, Int)]

बाद में यह अच्छा रहेगा कि आप इस समस्या पर दोबारा लौटें और दूसरे डेटा टाइप और लाइब्रेरी के साथ खेलें:

  • Text, text पैकेज से।
  • Map, containers पैकेज से।
  • MultiSet, multiset पैकेज से

टेस्ट सूट जानबूझकर ऐसा बनाया गया है कि वह लगभग किसी भी समझदार टाइप सिग्नेचर को स्वीकार कर लेता है, इसलिए आपको प्रोत्साहित किया जाता है कि आप वही चुनें जो आपको सबसे अच्छा लगे।


स्रोत

यह एक पुरानी, आसान-सी अभ्यास समस्या है, पर Go Tour में इसे देखकर हमें इसकी याद आई।
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Haskell Exercism

शब्दों की गिनती शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।