ट्रैक
/
Gleam
Gleam
/
अभ्यास
/
हाई स्कोर बोर्ड
हाई स्कोर बोर्ड

हाई स्कोर बोर्ड

सीखने का अभ्यास

परिचय

टाइप एलियस

टाइप एलियस

Gleam में टाइप एलियस का इस्तेमाल करके किसी मौजूदा टाइप को एक ऐसा सुविधाजनक नाम दिया जा सकता है, जिसे लिखना वरना मुश्किल होता।

pub type Headers =
  List(#(String, String))

pub fn html_headers() -> Headers {
  [
    #("content-type", "text/html"),
    #("x-frame-options", "DENY"),
  ]
}

जब इसे pub type के साथ लिखा जाता है, तो एलियस उस मॉड्यूल के बाहर भी इस्तेमाल किया जा सकता है जिसमें इसे परिभाषित किया गया है। अगर pub हटा दिया जाए, तो एलियस प्राइवेट हो जाता है और दूसरे मॉड्यूल में उसका इस्तेमाल नहीं किया जा सकता।

डिक्शनरी

Gleam में डिक्शनरी एक डेटा स्ट्रक्चर है जो जानकारी को की-वैल्यू जोड़ों में संग्रहीत करता है। दूसरी भाषाओं में इन्हें असोसिएटिव ऐरे, हैश या डिक्शनरी भी कहा जाता है।

डिक्शनरी में की और वैल्यू के लिए कोई भी टाइप इस्तेमाल किया जा सकता है, और जब उन्हें एक्सेस किया जाता है या वे लौटाई जाती हैं, तो वे अपनी एंट्री का क्रम सुनिश्चित नहीं करतीं।

डिक्शनरी के साथ काम करना

डिक्शनरी gleam/dict मॉड्यूल के फंक्शनों की मदद से बनाई जाती हैं और उन पर काम किया जाता है।

// Create an empty dict
let dict1 = dict.new()

// Create a dict with some values
let dict2 = dict.from_list([
  #("name", "Gleam"),
  #("colour", "Pink"),
])

// Add a value to a dict
let dict3 = dict.insert(dict2, "website", "https://gleam.run")

// Get a value from a dict
let name = dict.get(dict3, "name")
// -> Ok("Gleam")

निर्देश

इस अभ्यास में आप अपने स्थानीय आर्केड हॉल के सबसे लोकप्रिय खेल के हाई स्कोर का हिसाब रखने का तरीका बना रहे हैं।

आपको 5 फंक्शन बनाने हैं। ये ज़्यादातर एक ऐसे ऑब्जेक्ट को संभालने से जुड़े हैं जिसमें हाई स्कोर रखे जाते हैं।

1. नया हाई स्कोर बोर्ड बनाइए

एक फंक्शन create_score_board बनाइए जो एक डिक्शनरी लौटाता है, और वही डिक्शनरी हाई स्कोर बोर्ड का काम करती है। इस ऑब्जेक्ट में कीज़ खिलाड़ियों के नाम होंगी और वैल्यूज़ उनके स्कोर होंगी। टेस्ट के लिए आप चाहते हैं कि ऑब्जेक्ट में सीधे एक एंट्री पहले से शामिल हो। इस शुरुआती एंट्री में खिलाड़ी का नाम "The Best Ever" और स्कोर 1_000_000 होना चाहिए।

create_score_board()
// returns an object with one initial entry

2. स्कोर बोर्ड में खिलाड़ी जोड़िए

हाई स्कोर बोर्ड में कोई खिलाड़ी जोड़ने के लिए add_player फंक्शन बनाइए। यह 3 पैरामीटर लेता है:

  • पहला पैरामीटर एक मौजूदा स्कोर बोर्ड डिक्शनरी है।
  • दूसरा पैरामीटर खिलाड़ी का नाम है, जो स्ट्रिंग के रूप में दिया जाता है।
  • तीसरा पैरामीटर स्कोर है, जो पूर्णांक के रूप में दिया जाता है।

यह फंक्शन एक डिक्शनरी लौटाता है जिसमें नया खिलाड़ी और उसका स्कोर जोड़ दिया गया होता है।

3. स्कोर बोर्ड से खिलाड़ी हटाइए

अगर कोई खिलाड़ी आर्केड हॉल के नियम तोड़ता है, तो उसे हाई स्कोर बोर्ड से हाथ से हटा दिया जाता है। remove_player बनाइए, जो 2 पैरामीटर लेता है:

  • पहला पैरामीटर एक मौजूदा स्कोर बोर्ड डिक्शनरी है।
  • दूसरा पैरामीटर खिलाड़ी का नाम है, जो स्ट्रिंग के रूप में दिया जाता है।

यह फंक्शन वह डिक्शनरी लौटाना चाहिए जिसमें से हटाया गया खिलाड़ी न हो।

अगर खिलाड़ी शुरू से ही बोर्ड पर नहीं था, तो बोर्ड में कोई बदलाव नहीं होना चाहिए, उसे जैसा है वैसा ही लौटा देना चाहिए।

4. खिलाड़ी का स्कोर बढ़ाइए

अगर कोई खिलाड़ी आर्केड हॉल में एक और खेल पूरा करता है, तो बोर्ड पर लिखे उसके पिछले स्कोर में कुछ अंक जोड़ दिए जाते हैं। update_score बनाइए, जो 3 पैरामीटर लेता है:

  • पहला पैरामीटर एक मौजूदा स्कोर बोर्ड डिक्शनरी है।
  • दूसरा पैरामीटर उस खिलाड़ी का नाम है जिसका स्कोर बढ़ाना है।
  • तीसरा पैरामीटर वह स्कोर है जिसे आप संग्रहीत हाई स्कोर में जोड़ना चाहते हैं।

फंक्शन को वह डिक्शनरी लौटानी चाहिए जिसमें स्कोर अपडेट हो चुका हो।

अगर खिलाड़ी शुरू से ही बोर्ड पर नहीं था, तो बोर्ड में कोई बदलाव नहीं होना चाहिए, उसे जैसा है वैसा ही लौटा देना चाहिए।

5. सोमवार के बोनस अंक लगाइए

आर्केड हॉल सोमवार को एक अलग स्कोर बोर्ड रखता है। दिन के अंत में उस बोर्ड पर मौजूद हर खिलाड़ी को 100 अतिरिक्त अंक मिलते हैं।

apply_monday_bonus फंक्शन बनाइए, जो एक स्कोर बोर्ड लेता है। यह फंक्शन एक डिक्शनरी लौटाता है जिसमें उस बोर्ड पर दर्ज हर खिलाड़ी के लिए बोनस अंक जोड़ दिए गए होते हैं।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Gleam Exercism

हाई स्कोर बोर्ड शुरू करने के लिए तैयार हैं?

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