आप एक ऐसी कंपनी के लिए काम करते हैं जो Lexiconia नाम का ऑनलाइन मल्टीप्लेयर गेम बनाती है।
यह गेम खेलने के लिए हर खिलाड़ी को 13 अक्षर दिए जाते हैं। खिलाड़ी को इन्हें मिलाकर शब्द बनाने होते हैं। हर अक्षर के अंक अलग-अलग होते हैं, क्योंकि कुछ अक्षरों से शब्द बनाना दूसरों के मुकाबले आसान होता है।
यह गेम पहले अंग्रेज़ी में शुरू किया गया था, लेकिन अब यह बहुत लोकप्रिय है। इसलिए कंपनी अब इसे दूसरी भाषाओं में भी शुरू करना चाहती है।
हर भाषा में अक्षरों के अंक अलग-अलग होने चाहिए। ये अंक इस बात से तय होते हैं कि उस भाषा के दूसरे अक्षरों की तुलना में वे अक्षर कितनी बार इस्तेमाल होते हैं।
उदाहरण के लिए, अंग्रेज़ी में 'C' अक्षर काफी आम है और इसके सिर्फ 3 अंक मिलते हैं। लेकिन नॉर्वेजियाई में यह बहुत कम इस्तेमाल होने वाला अक्षर है और इसके 10 अंक मिलते हैं।
नई भाषाएँ जोड़ना आसान बनाने के लिए आपकी टीम को गेम में अक्षरों और उनके अंकों को रखने का तरीका बदलना होगा।
आपको गेम में अक्षरों और उनके अंकों का डेटा फॉर्मेट बदलना है।
फिलहाल अक्षर अपने स्कोर के आधार पर समूहों में संग्रहीत किए जाते हैं, जो एक-से-अनेक मैपिंग है।
इसे बदलकर हर अक्षर को उसके स्कोर के साथ एक-से-एक मैपिंग में संग्रहीत करना है।
इस बदलाव के साथ टीम ने यह भी तय किया है कि अक्षर अब बड़े अक्षरों की जगह छोटे अक्षरों में होंगे।
अगर आप देखना चाहते हैं कि डेटा पहले कैसे व्यवस्थित था और उसे कैसे बदलना है, तो टेस्ट सूट में दिए गए उदाहरणों पर एक नज़र डालिए।
jq के लिए सुझावयह अभ्यास एक इनपुट ऑब्जेक्ट लेकर उसे एक नए ऑब्जेक्ट में बदलने के बारे में है। कुछ बिल्ट-इन फंक्शन हैं जो इसमें मदद कर सकते हैं:
to_entries
{"key": "K", "value": V}
K इनपुट ऑब्जेक्ट में मौजूद एक की हैV उस K से जुड़ी वैल्यू है।from_entries
{"key": K, "value": V} ऑब्जेक्टों का एक ऐरे लेता है और उससे एक ऑब्जेक्ट बनाता हैएक उदाहरण:
jq -n '
{
"username": "glennj",
"tracks": ["bash", "awk", "jq"],
"reputation": 123
}
| to_entries
'
तो आउटपुट मिलता है:
[
{
"key": "username",
"value": "glennj"
},
{
"key": "tracks",
"value": ["bash", "awk", "jq"]
},
{
"key": "reputation",
"value": 123
}
]
Exercism पर साइन अप कीजिए और jq को 12 कॉन्सेप्ट75 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।