Rutas
/
Elixir
Elixir
/
Ejercicios
/
Administrador de sistemas alemán
Administrador de sistemas alemán

Administrador de sistemas alemán

Ejercicio de aprendizaje

Introducción

Charlists

Los charlists se crean mediante el sigilo ~c.

~c"hello"
Note

Ten en cuenta que en versiones anteriores de Elixir, los charlists se representan como 'hello' con comillas simples.

Aunque se parecen mucho a los strings, estos dos tipos de datos son bastante diferentes entre sí. Un charlist es una lista de enteros. Los enteros representan los valores Unicode de un carácter dado, también conocidos como puntos de código.

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

Puedes anteponer ? a un carácter para obtener su punto de código.

?A
# => 65

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

Como los charlists son listas, puedes trabajar con ellos igual que con cualquier otra lista: mediante recursión y coincidencia de patrones.

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

Puedes concatenar dos listas con ++.

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

Cuanto más larga sea la primera lista, más lenta será la concatenación, así que evita añadir elementos repetidamente a listas de longitud arbitraria.

Case

case es una estructura de control de flujo que nos permite comparar un valor dado con muchos patrones. Las cláusulas de una expresión case se evalúan de arriba abajo, hasta que se encuentra una coincidencia.

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"

Instrucciones

Trabajas como administrador de sistemas en una gran empresa de Múnich, Alemania. Una de tus responsabilidades es gestionar las cuentas de correo electrónico.

Has estado escuchando las quejas de personas que dicen que no pueden escribir correos al señor Müller. Pronto te das cuenta de que la mayoría de la empresa usa un cliente de correo antiguo que no reconoce müller@firma.de como una dirección de correo válida debido al carácter no ASCII.

Decirle a la gente que abandone su viejo cliente de correo favorito es una batalla perdida, así que decides crear alias saneados para todas las cuentas de correo.

1. Sanea los nombres de usuario existentes eliminando todo excepto las letras minúsculas

Implementa la función sanitize/1. Debe aceptar un nombre de usuario como charlist y devolver el nombre de usuario con todos los caracteres excepto las letras minúsculas eliminados.

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

2. Permite los guiones bajos

Amplía la función sanitize/1. No debe eliminar los guiones bajos del nombre de usuario.

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

3. Sustituye los caracteres alemanes

Hay 4 caracteres no ASCII en el alfabeto alemán, y todos ellos tienen sustitutos ASCII comúnmente reconocidos.

Carácter alemán Sustituto ASCII
ä ae
ö oe
ü ue
ß ss

Amplía la función sanitize/1. Debe sustituir los caracteres alemanes según la tabla. Puedes asumir sin problema que todos los nombres de usuario ya están en minúsculas.

Username.sanitize(~c"cäcilie_weiß")
# => ~c"caecilie_weiss"
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Elixir Exercism

¿Listo para empezar Administrador de sistemas alemán?

Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.