आप एक ऐसी कंपनी के लिए काम करते हैं जो Lexiconia नाम का ऑनलाइन मल्टीप्लेयर गेम बनाती है।
यह गेम खेलने के लिए हर खिलाड़ी को 13 अक्षर दिए जाते हैं। खिलाड़ी को इन्हें मिलाकर शब्द बनाने होते हैं। हर अक्षर के अंक अलग-अलग होते हैं, क्योंकि कुछ अक्षरों से शब्द बनाना दूसरों के मुकाबले आसान होता है।
यह गेम पहले अंग्रेज़ी में शुरू किया गया था, लेकिन अब यह बहुत लोकप्रिय है। इसलिए कंपनी अब इसे दूसरी भाषाओं में भी शुरू करना चाहती है।
हर भाषा में अक्षरों के अंक अलग-अलग होने चाहिए। ये अंक इस बात से तय होते हैं कि उस भाषा के दूसरे अक्षरों की तुलना में वे अक्षर कितनी बार इस्तेमाल होते हैं।
उदाहरण के लिए, अंग्रेज़ी में 'C' अक्षर काफी आम है और इसके सिर्फ 3 अंक मिलते हैं। लेकिन नॉर्वेजियाई में यह बहुत कम इस्तेमाल होने वाला अक्षर है और इसके 10 अंक मिलते हैं।
नई भाषाएँ जोड़ना आसान बनाने के लिए आपकी टीम को गेम में अक्षरों और उनके अंकों को रखने का तरीका बदलना होगा।
आपको गेम में अक्षरों और उनके अंकों का डेटा फॉर्मेट बदलना है।
फिलहाल अक्षर अपने स्कोर के आधार पर समूहों में संग्रहीत किए जाते हैं, जो एक-से-अनेक मैपिंग है।
इसे बदलकर हर अक्षर को उसके स्कोर के साथ एक-से-एक मैपिंग में संग्रहीत करना है।
इस बदलाव के साथ टीम ने यह भी तय किया है कि अक्षर अब बड़े अक्षरों की जगह छोटे अक्षरों में होंगे।
अगर आप देखना चाहते हैं कि डेटा पहले कैसे व्यवस्थित था और उसे कैसे बदलना है, तो टेस्ट सूट में दिए गए उदाहरणों पर एक नज़र डालिए।
AWK का इस्तेमाल बहुत बार एक ETL टूल की तरह किया जाता है (इनपुट पढ़ना, उसे संसाधित करना और एक "रिपोर्ट" लिखना)। व्यवहार में बहुत बार इनपुट का फॉर्मेट थोड़ा उलझा हुआ होता है। यह अभ्यास भी इसी की नकल करने की कोशिश करेगा। इसके लिए यह ऐसे इनपुट फॉर्मेट इस्तेमाल करेगा जो हर बार एक जैसे नहीं होते, और आपके प्रोग्राम को उन्हें एक समान रूप में लाना होगा।
Exercism पर साइन अप कीजिए और AWK को 3 कॉन्सेप्ट92 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।