Track
/
Elixir
Elixir
/
Esercizi
/
Sysadmin tedesco
Sysadmin tedesco

Sysadmin tedesco

Esercizio di apprendimento

Introduzione

Charlist

Le charlist si creano usando il sigil ~c.

~c"hello"
Note

Nota che nelle versioni più vecchie di Elixir le charlist sono rappresentate come 'hello' con le virgolette singole.

Anche se sembrano molto simili alle stringhe, questi due tipi di dati sono piuttosto diversi tra loro. Una charlist è un array di interi. Gli interi rappresentano i valori Unicode di un dato carattere, noti anche come punti di codice.

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

Puoi anteporre ? a un carattere per ottenerne il punto di codice.

?A
# => 65

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

Dato che le charlist sono array, puoi lavorarci proprio come con qualsiasi altro array, usando ricorsione e pattern matching.

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

Puoi concatenare due array usando ++.

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

Più lungo è il primo array, più lenta è la concatenazione, quindi evita di aggiungere ripetutamente elementi in coda ad array di lunghezza arbitraria.

Case

case è una struttura di controllo che ci permette di confrontare un dato valore con molti pattern. Le clausole di un'espressione case vengono valutate dall'alto verso il basso, finché non si trova una corrispondenza.

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"

Istruzioni

Lavori come amministratore di sistema per una grande azienda a Monaco di Baviera, in Germania. Una delle tue responsabilità è gestire gli account email.

Hai sentito le lamentele di alcune persone che dicono di non riuscire a scrivere email al signor Müller. Ti rendi presto conto che gran parte dell'azienda usa un vecchio client di posta che non riconosce müller@firma.de come un indirizzo email valido, a causa del carattere non ASCII.

Dire alle persone di rinunciare al loro vecchio client di posta preferito è una battaglia persa, quindi decidi di creare degli alias ripuliti per tutti gli account email.

1. Ripulisci i nomi utente esistenti rimuovendo tutto tranne le lettere minuscole

Implementa la funzione sanitize/1. Deve accettare un nome utente come charlist e restituire il nome utente con tutti i caratteri rimossi tranne le lettere minuscole.

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

2. Consenti gli underscore

Estendi la funzione sanitize/1. Non deve rimuovere gli underscore dal nome utente.

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

3. Sostituisci i caratteri tedeschi

Nell'alfabeto tedesco ci sono 4 caratteri non ASCII, e tutti hanno dei sostituti ASCII comunemente riconosciuti.

Carattere tedesco Sostituto ASCII
ä ae
ö oe
ü ue
ß ss

Estendi la funzione sanitize/1. Deve sostituire i caratteri tedeschi secondo la tabella. Puoi presumere tranquillamente che tutti i nomi utente siano già in minuscolo.

Username.sanitize(~c"cäcilie_weiß")
# => ~c"caecilie_weiss"
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Elixir Exercism

Vuoi iniziare Sysadmin tedesco?

Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.