Powered by AppSignal & Oban Pro

Habitación 5: Rangos y Sumatorias

space_station/06.livemd

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? [**Rangos**](https://elixir.hexdocs.pm/1.20.0/Range.html) 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 ```elixir 1..5 # 1, 2, 3, 4, 5 ``` ```elixir 5..1 # 5, 4, 3, 2, 1 ``` ```elixir 1..10//2 # 1, 3, 5, 7, 9 ``` ```elixir 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](https://elixir.hexdocs.pm/1.20.0/Enum.html#sum/1): ```elixir numeros = [1, 2, 3] |> Enum.sum() ```

Establece tu respuesta

a = 1
b = 0
respuesta =
    a..b
    |> Enum.sum()

Verifica tu respuesta

Room.verify(respuesta)