ट्रैक
/
Elm
Elm
/
अभ्यास
/
टिसबरी खज़ाने की खोज
टिसबरी खज़ाने की खोज

टिसबरी खज़ाने की खोज

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

परिचय

टपल

Elm में टपल दो या तीन वैल्यू रख सकते हैं, और हर वैल्यू किसी भी टाइप की हो सकती है। Elm में टपल का इस्तेमाल ज़्यादातर साधारण और अस्थायी टाइप के लिए किया जाता है। इसी वजह से टपल में सबसे ज़्यादा 3 वैल्यू ही हो सकती हैं, और इसे और बढ़ावा देने के लिए सुविधाजनक फंक्शन सिर्फ 2 वैल्यू के लिए ही दिए गए हैं। ज़्यादा जटिल डेटा के लिए रिकॉर्ड इस्तेमाल करना ही बेहतर है।

type alias IntStringTuple = (Int, String)

aTuple : IntStringTuple
aTuple = (123, "elements can be of differing types")

anotherTuple : (String, String)
anotherTuple = Tuple.pair "this time it's" "two strings"
    --> ("this time it's", "two strings")

Tuple.first aTuple
    --> 123

Tuple.second aTuple
    --> "elements can be of differing types"

बाइंडिंग में टपल पैटर्न मैचिंग की मदद से टपल को अलग-अलग हिस्सों में बाँटा जा सकता है। यह बाँटने का काम let एक्सप्रेशन, फंक्शन की घोषणाओं और case स्टेटमेंट में किया जा सकता है।

repeatString : (Int, String) -> Bool
repeatString aTuple =
let
    (aNumber, aString) = aTuple
in
    String.repeat aNumber aString

repeatStringAgain : (Int, String) -> Bool
repeatStringAgain (aNumber, aString) = String.repeat aNumber aString

has123 : (Int, String, Bool) -> Bool
has123 aTuple =
    case aTuple of
        (123, _, _) ->
            True
        (_, "123", _) ->
            True
        (_, _, True) ->
            True
        _ ->
            False

निर्देश

Aazra और Rui समुद्री डाकुओं की थीम पर एक खज़ाने की खोज तैयार कर रहे हैं। यहाँ दो सूचियाँ हैं: एक में खज़ाने और नक्शे पर उनकी लोकेशन, और दूसरी में जगहों के नाम और उनकी लोकेशन।

खज़ाना लोकेशन
Amethyst Octopus (1, F)
Angry Monkey Figurine (5, B)
Antique Glass Fishnet Float (3, D)
Brass Spyglass (4, B)
Carved Wooden Elephant (8, C)
Crystal Crab (6, A)
Glass Starfish (6, D)
Model Ship in Large Bottle (8, A)
Pirate Flag (7, F)
Robot Parrot (1, C)
Scrimshaw Whale's Tooth (1, F)
Silver Seahorse (4, E)
Vintage Pirate Hat (7, E)
जगह का नाम लोकेशन चतुर्थांश
Seaside Cottages (C, 1) Blue
Aqua Lagoon (Island of Mystery) (F, 1) Yellow
Deserted Docks (A, 2) Blue
Spiky Rocks (D, 3) Yellow
Abandoned Lighthouse (B, 4) Blue
Hidden Spring (Island of Mystery) (E, 4) Yellow
Stormy Breakwater (B, 5) Purple
Old Schooner (A, 6) Purple
Tangled Seaweed Patch (D, 6) Orange
Quiet Inlet (Island of Mystery) (E, 7) Orange
Windswept Hilltop (Island of Mystery) (F, 7) Orange
Harbor Managers Office (A, 8) Purple
Foggy Seacave (C, 8) Purple

खिलाड़ी नक्शे पर घूमते हुए रास्ते में खज़ाने इकट्ठा करते जाएँगे। खज़ानों और जगहों की लोकेशन अलग-अलग ढंग से लिखी गई हैं, ताकि चुनौती थोड़ी और बढ़ जाए। कुछ खास जगहें भी हैं, जहाँ कुछ खज़ानों को कुछ और खज़ानों से बदला जा सकता है, ताकि खेल में एक और मोड़ आ जाए। आपको उनके खेल में मदद करने के लिए कुछ फंक्शन लिखने हैं।

1. लोकेशन बदलिए

placeLocationToTreasureLocation फंक्शन बनाइए, जो एक जगह की लोकेशन (जैसे ('C', 1)) लेता है और उसे खज़ाने की लोकेशन (जैसे (1, 'C')) में बदल देता है।

placeLocationToTreasureLocation ('C', 1)
--> (1,'C')

2. खज़ाने और जगह की लोकेशन की तुलना कीजिए

treasureLocationMatchesPlaceLocation फंक्शन बनाइए, जो एक PlaceLocation (जैसे ('C', 1)) लेता है और अगर वह किसी TreasureLocation (जैसे (1, 'C')) से मेल खाता है, तो सही लौटाता है।

treasureLocationMatchesPlaceLocation ('C', 1) (1, 'C')
--> true

treasureLocationMatchesPlaceLocation ('C', 1) (2, 'C')
--> false

3. खज़ानों की लोकेशन गिनिए

countPlaceTreasures फंक्शन बनाइए। यह एक जगह (जैसे ("Aqua Lagoon (Island of Mystery)", ('F', 1))) और खज़ानों की सूची लेता है, और उन खज़ानों की संख्या लौटाता है जो वहाँ मिल सकते हैं।

place = ("Aqua Lagoon (Island of Mystery)", ('F', 1))

countPlaceTreasures place treasures =
--> 2

4. खास जगहें

specialCaseSwapPossible फंक्शन बनाइए। यह एक खज़ाना (जैसे ("Amethyst Octopus", (1, 'F'))) और एक जगह (जैसे ("Seaside Cottages ", ('C', 1))) लेता है, और नीचे दिए गए जोड़ों के लिए सही लौटाता है:

  • Abandoned Lighthouse पर Brass Spyglass को किसी भी दूसरे खज़ाने से बदला जा सकता है
  • Stormy Breakwater पर Amethyst Octopus को Crystal Crab या Glass Starfish से बदला जा सकता है
  • Harbor Managers Office पर Vintage Pirate Hat को Model Ship in Large Bottle या Antique Glass Fishnet Float से बदला जा सकता है

इस फंक्शन को if स्टेटमेंट इस्तेमाल करने के बजाय एक case स्टेटमेंट और मौके पर ही बनाए गए एक टपल से लिखने की कोशिश कीजिए (Elm में यह एक आम तरीका है)।

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

टिसबरी खज़ाने की खोज शुरू करने के लिए तैयार हैं?

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