Kurzusok
/
Elixir
Elixir
/
Feladatok
/
Német rendszergazda
Német rendszergazda

Német rendszergazda

Tanulófeladat

Bevezetés

Charlistek

A charlisteket a ~c sigillel hozod létre.

~c"hello"
Note

Figyelj rá, hogy az Elixir régebbi verzióiban a charlisteket 'hello' formában, aposztrófokkal jelölik.

Bár nagyon hasonlítanak a stringekhez, a két adattípus jelentősen különbözik egymástól. A charlist egész számok listája. Az egész számok egy adott karakter Unicode-értékét reprezentálják, amit kódpontnak is neveznek.

[65, 66, 67]
# => ~c"ABC"

Ha egy karakter elé ?-t teszel, megkapod a kódpontját.

?A
# => 65

[?:, ?)]
# => ~c":)"

Mivel a charlistek listák, ugyanúgy dolgozhatsz velük, mint bármely más listával: rekurzióval és mintaillesztéssel.

[first_letter | _] = ~c"cat"
first_letter
# => 99

Két listát a ++ operátorral fűzhetsz össze.

~c"hi" ++ ~c"!"
# => ~c"hi!"

Minél hosszabb az első lista, annál lassabb az összefűzés, ezért kerüld, hogy ismételten hozzáfűzz tetszőleges hosszúságú listákhoz.

Case

A case egy vezérlési szerkezet, amellyel egy adott értéket több mintával is összehasonlíthatsz. A case kifejezés klauzuláit felülről lefelé haladva értékeli ki, amíg egyezést nem talál.

age = 15

case age do
  0 -> ~c"infant"
  age when age < 4 -> ~c"baby"
  age when age < 13 -> ~c"child"
  age when age < 18 -> ~c"teenager"
  _ -> ~c"adult"
end

# => ~c"teenager"

Utasítások

Rendszergazdaként dolgozol egy nagy müncheni vállalatnál Németországban. Az egyik feladatod az e-mail-fiókok kezelése.

Több embertől is panaszt hallasz, hogy nem tudnak e-mailt írni Müller úrnak. Hamar rájössz, hogy a vállalat nagy része egy régi e-mail-klienst használ, amely a nem ASCII-karakter miatt nem ismeri fel a müller@firma.de címet érvényes e-mail-címként.

Arra kérni az embereket, hogy adják fel a kedvenc régi e-mail-kliensüket, reménytelen vállalkozás, ezért úgy döntesz, hogy minden e-mail-fiókhoz tisztított aliasokat készítesz.

1. Meglévő felhasználónevek tisztítása minden nem kisbetű karakter eltávolításával

Valósítsd meg a sanitize/1 függvényt. A függvény egy felhasználónevet fogadjon el karakterlistaként, és olyan felhasználónevet adjon vissza, amelyből minden karaktert eltávolít a kisbetűk kivételével.

Username.sanitize(~c"schmidt1985")
# => ~c"schmidt"

2. Alulvonások engedélyezése

Bővítsd a sanitize/1 függvényt. A függvény ne távolítsa el az alulvonásokat a felhasználónévből.

Username.sanitize(~c"mark_fischer$$$")
# => ~c"mark_fischer"

3. Német karakterek helyettesítése

A német ábécében 4 nem ASCII-karakter található, és mindegyikhez tartozik egy közismert ASCII-helyettesítő.

Német karakter ASCII-helyettesítő
ä ae
ö oe
ü ue
ß ss

Bővítsd a sanitize/1 függvényt. A függvény a táblázat szerint helyettesítse a német karaktereket. Nyugodtan feltételezheted, hogy minden felhasználónév már csupa kisbetű.

Username.sanitize(~c"cäcilie_weiß")
# => ~c"caecilie_weiss"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Elixir Exercism

Készen állsz elkezdeni a(z) Német rendszergazda feladatot?

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