Kurzusok
/
Gleam
Gleam
/
Feladatok
/
Kapd el mindet!
Kapd el mindet!

Kapd el mindet!

Tanulófeladat

Bevezetés

Halmazok

A halmaz egy megváltoztathatatlan és rendezetlen gyűjtemény, amely egyedi értékekből áll. A halmaz minden elemének azonos típusúnak kell lennie.

A gleam/set modul definiálja a Set típust, és függvényeket biztosít a halmazokkal való munkához.

A listákat és a halmazokat átalakíthatod egymásba a set.to_list és a set.from_list függvénnyel. A halmaz elemeinek sorrendje nem garantált.

set.from_list([2, 3, 3, 3, 1, 1, 2])
// -> set.from_list([1, 2, 3])

set.to_list(set.from_list([2, 3, 3, 3, 1, 1, 2]))
// -> [1, 2, 3]

Halmazokat hozhatsz létre és tölthetsz fel a set.new, a set.insert és a set.delete függvénnyel.

set.new()
// -> set.from_list([])

let eighty_eight = set.from_list([88])

set.insert(eighty_eight, 88)
// -> set.from_list([88])

set.insert(eighty_eight, 89)
// -> set.from_list([88, 89])

set.delete(eighty_eight, 89)
// -> set.from_list([88])

A halmaz tartalmát a set.contains és a set.size függvénnyel kérdezheted le.

set.contains(eighty_eight, 88)
// -> True

set.size(eighty_eight)
// -> 1

A halmazokat a set.union és a set.intersection függvénnyel kombinálhatod.

let a = set.from_list([1, 5, 10])
let b = set.from_list([1, 2, 3, 4, 5])

set.union(a, b)
// -> set.from_list([1, 2, 3, 4, 5, 10])

set.intersection(a, b)
// -> set.from_list([1, 5])

A halmazokat szűrheted.

let is_small = fn(n) { n <= 3 }

set.filter(b, is_small)
// -> set.from_list([1, 2, 3])

Utasítások

A Blorkemon™️ kártyák iránti nosztalgiád egyáltalán nem látszik alábbhagyni: még újra el is kezdted gyűjteni őket, és a barátaidat is ráveszed, hogy csatlakozzanak hozzád.

Ebben a feladatban egy kártyagyűjteményt a Set(String) képvisel, mivel a duplikált kártyák nem számítanak, ha a célod az összes létező kártya megszerzése.

1. Indíts egy gyűjteményt

Szeretnéd, ha a barátaid is beszállnának a Blorkemon™️-őrületbe, és erre a legjobb mód, ha egy kártyával beindítod a gyűjteményüket.

Valósítsd meg a new_collection függvényt, amely egy kártyát gyűjteménnyé alakít.

new_collection("Newthree")
// -> set.from_list(["Newthree"])

2. Növeld a gyűjteményt

Amint van egy gyűjteményed, az önálló életre kel, és növekednie kell.

Valósítsd meg az add_card függvényt, amely egy kártyát és egy gyűjteményt kap, és egy kételemű tuple-t ad vissza: egy Bool értéket, amely jelzi, hogy a kártya már benne volt-e a gyűjteményben, valamint a gyűjteményt a hozzáadott kártyával.

add_card(set.from_list(["Newthree"]), "Scientuna")
// -> #(False, set.from_list(["Newthree", "Scientuna"]))

3. Kezdj el kereskedni

Most, hogy a barátaid újra megőrültek a Blorkemon™️-ért, kártyacserékkel növelheted a saját gyűjteményedet.

Nem minden csere éri meg, sőt némelyik egyáltalán nem is lehetséges. Nem cserélhetsz el olyan kártyát, amivel nem rendelkezel, és nem is érdemes olyan kártyát elcserélned, amely már megvan.

Valósítsd meg a trade_card függvényt, amely a két elcserélendő kártyát (a tiédet és az övékét) és a jelenlegi gyűjteményedet kapja. A visszatérési érték egy kételemű tuple: egy Bool, amely megmondja, hogy a csere lehetséges-e és megéri-e, valamint az a gyűjtemény, amelyhez a csere végrehajtásával jutnál (akkor is, ha az valójában nem lehetséges).

trade_card("Scientuna", "Newthree", set.from_list(["Scientuna"]))
// -> #(True, set.from_list(["Newthree"]))

4. Kártyák, amelyek mindegyiküknél megvannak

Te és a Blorkemon™️-rajongó barátaid összegyűltök, és azon tűnődtök, melyek a leggyakoribb kártyák.

Valósítsd meg a boring_cards függvényt, amely gyűjtemények egy listáját kapja, és visszaadja azoknak a kártyáknak a rendezett listáját, amelyek minden gyűjteményben megtalálhatók.

boring_cards([set.from_list(["Scientuna"]), set.from_list(["Newthree", "Scientuna"])])
// -> ["Scientuna"]

5. Az összes kártya

Vajon te és a barátaid együttvéve a Blorkemon™️ kártyák összes darabját birtokoljátok?

Valósítsd meg a total_cards függvényt, amely gyűjtemények egy listáját kapja, és visszaadja az összes gyűjteményben található különböző kártyák számát.

total_cards([set.from_list(["Scientuna"]), set.from_list(["Newthree", "Scientuna"])])
// -> 2

6. Fényes győzelem

Hamarosan meglátogat az unokaöcséd, és le akarod nyűgözni. A gyerekek szeretik a csillogó dolgokat, nem igaz? A Blorkemon™️ kártyák lehetnek csillogók!

Valósítsd meg a shiny_cards függvényt, amely egy gyűjteményt kap, és egy olyan halmazt ad vissza, amely minden olyan kártyát tartalmaz, amely a "Shiny " szöveggel kezdődik.

shiny_cards(set.from_list(["Newthree", "Scientuna", "Shiny Scientuna"]))
// -> set.from_list(["Shiny Scientuna"])
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Gleam Exercism

Készen állsz elkezdeni a(z) Kapd el mindet! feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Gleam nyelvet 33 fogalom122 feladat segítségével, valódi emberi mentorálással, mindez ingyen.