Listas y cons en Elixir
Armar una ruta de navegación anteponiendo, empalmando y recorriendo cabeza y cola.
# Lists are linked cells: | prepends in one step, ++ splices two lists.
ports = ["Reykjavik", "Nuuk"]
route = ["Halifax" | ports] ++ ["Tromso"]
IO.inspect(route, label: "route")
IO.puts("depart from #{hd(route)}")
IO.puts("then: #{Enum.join(tl(route), " -> ")}")
IO.puts("legs to sail: #{length(route) - 1}")
Cómo funciona
["Halifax" | ports]antepone en tiempo constante;++empalma"Tromso"al final.hdytlparten la ruta en la primera escala y el resto.length(route) - 1cuenta los tramos entre las escalas.
El intento, en números
- Líneas
- 8
- Caracteres a escribir
- 309
- Tokens
- 92
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 74 segundos.
Paso 1 de 3 en Listas y tuplas; paso 7 de 27 en Fundamentos del lenguaje.