Habitación 5: Rangos y Sumatorias
Mix.install([
{:explorer, "~> 0.11.1"},
{:kino, "~> 0.19.0"},
{:kino_explorer, "~> 0.1.25"},
{:kino_vega_lite, "~> 0.1.13"},
{:helpers, path: Path.expand("./helpers", __DIR__)}
])
defmodule Room do
require Explorer.DataFrame, as: DF
def verify(answer) do
case answer do
500500 -> Helpers.Messages.correct(
"07.livemd",
"¡Muy bien!, Es el valor buscado."
)
_ -> Helpers.Messages.error(
"No es la respuesta correcta. Inténtalo nuevamente."
)
end
|> Kino.Markdown.new()
end
end
Contexto
Frente a ti, una compuerta metálica de alta seguridad se mantiene cerrada 🔒.
En su pantalla, un mensaje parpadea sin cesar:
> 🧮 Ingresa la suma correcta de la secuencia del 1 al 1000 para desbloquear el sistema.
Desafío de la habitación
Asigna los valores correspondientes a las variables a y b.
💡¿Cómo se hacen los rangos y sumatorias en Elixir?
Los rangos (range) en Elixir se pueden crear utilizando los dos puntos ..
entre dos números. Representan una secuencia de cero, uno o muchos enteros, ya sea en orden
ascendente o descendente, con una diferencia común llamada paso (step).
La forma más común de crear y hacer coincidencia (matching) con rangos es mediante
las notaciones primero..último y primero..último//paso, que se importan
automáticamente desde Kernel.
Ejemplos
1..5
# 1, 2, 3, 4, 5
5..1
# 5, 4, 3, 2, 1
1..10//2
# 1, 3, 5, 7, 9
10..1//-3
# 10, 7, 4, 1
Donde:
-
1..5→ rango ascendente. -
5..1→ rango descendente. -
1..10//2→ avanza de 2 en 2. -
10..1//-3→ retrocede de 3 en 3.
Sumatorias
Para realizar una sumatoria de números en una lista se utiliza Enum.sum:
numeros =
[1, 2, 3]
|> Enum.sum()
Establece tu respuesta
a = 1
b = 0
respuesta =
a..b
|> Enum.sum()
Verifica tu respuesta
Room.verify(respuesta)