Powered by AppSignal & Oban Pro

Habitación 8: Condicionales

space_station/09.livemd

Habitación 8: Condicionales

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
    first_crew_member = answer.(true, "Alta")
    second_crew_member = answer.(true, "Baja")
    third_crew_member = answer.(false, "Alta")

    if first_crew_member == true and second_crew_member == false and third_crew_member == false do
        Helpers.Messages.correct(
            "10.livemd",
            "¡Correcto! Haz click aquí para avanzar al siguiente desafío."
        )
    else
        Helpers.Messages.error(
            "No es la respuesta correcta. Inténtalo nuevamente."
        )
    end
    |> Kino.Markdown.new()
  end
end

Contexto

🔥 Tripulantes deben reparar la filtración de altas temperaturas debido a una averiación de un panel solar ☀️, tienes que procupar que se cumpla el protocolo de ingreso y para eso debes activar el sistema de seguridad 🛡️🚨.

Desafío

Van a ingresar tres tripulantes:

  • 👨‍🚀 Tripulante uno tiene credencial con acceso permitido (True) ✅ y traje con resistencia Alta 🧤.
  • 👨‍🚀 Tripulante dos tiene credencial con acceso permitido (True) ✅ y traje con resistencia Baja ⚠️.
  • 👨‍🚀 Tripulante tres tiene credencial con acceso denegado (False) ❌ y traje con resistencia Alta 🧤.

Ocupa las sentencias case para ejecutar código cuando se cumplen ciertas condiciones.

Ejemplo de uso de case
case cielo do
  "Muy nublado" -> "Lluvia"
  "Nublado" -> "Frío"
  _ -> "Templado"
end
Ejemplo de uso de case en funciones

Adicionalmente las funciones pueden ser usadas para un case en los parámetros. Esto permite definir funciones que entregarán un resultado según los valores de los parámetros, otorgando un código más sucinto.

fn
  "Muy nublado" -> "Lluvia"
  "Nublado" -> "Frío"
  _ -> "Templado"
end
💡 Pista Las sentencias ya están aplicadas, pero están igualadas (==) a valores erróneos. Reemplaza los valores `nil` por `true` o `"Alta"` dependiendo de la variable con la que se iguala.

Establece tu Respuesta

respuesta = fn
  nil, nil -> true
  _acceso, _resistencia -> false
end

Verifica tu respuesta

Room.verify(respuesta)