ট্র্যাক
/
Elm
Elm
/
অনুশীলনী
/
টিসবেরি গুপ্তধন সন্ধান
টিসবেরি গুপ্তধন সন্ধান

টিসবেরি গুপ্তধন সন্ধান

লার্নিং অনুশীলনী

ভূমিকা

টাপল

Elm-এ টাপল দুটি বা তিনটি মান ধরে রাখতে পারে, আর প্রতিটি মানের টাইপ যেকোনো কিছু হতে পারে। Elm-এ টাপল মূলত সাধারণ, ক্ষণস্থায়ী টাইপের কাজে ব্যবহৃত হয়। এই কারণেই টাপলে সর্বোচ্চ ৩টি মান থাকে, আর আরও উৎসাহ দিতে শুধু ২টি মানের জন্যই সুবিধাজনক ফাংশন সরবরাহ করা হয়। আরও জটিল ডেটার ক্ষেত্রে রেকর্ডে চলে যাওয়াই সবচেয়ে ভালো।

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

নির্দেশনা

আজরা ও রুই একটি জলদস্যু-থিমের গুপ্তধন সন্ধান ডিজাইন করছেন। একটি হলো ম্যাপে অবস্থান-সহ গুপ্তধনের তালিকা, অন্যটি ম্যাপে অবস্থান-সহ স্থানের নামের তালিকা।

গুপ্তধন অবস্থান
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 ফাংশনটি লিখুন, যেটি একটি Place Location (যেমন ('C', 1)) নিয়ে সেটিকে একটি Treasure Location-এ (যেমন (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 ফাংশনটি লিখুন, যেটি একটি Place (যেমন ("Aqua Lagoon (Island of Mystery)", ('F', 1))) এবং গুপ্তধনের তালিকা নেয়, আর সেখানে যে কতগুলো গুপ্তধন পাওয়া যায় সেই সংখ্যা রিটার্ন করে।

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

countPlaceTreasures place treasures =
--> 2

4. বিশেষ স্থান

specialCaseSwapPossible ফাংশনটি লিখুন, যেটি একটি Treasure (যেমন ("Amethyst Octopus", (1, 'F'))) এবং একটি Place (যেমন ("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 স্টেটমেন্ট ব্যবহার না করে একটি ad hoc টাপল দিয়ে case স্টেটমেন্ট হিসেবে এই ফাংশনটি লেখার চেষ্টা করুন (এটি Elm-এর একটি কমন আইডিয়ম)।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Elm Exercism

টিসবেরি গুপ্তধন সন্ধান শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Elm ট্র্যাকের 28টি কনসেপ্ট110টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।