Skip to content

Latest commit

 

History

History
160 lines (120 loc) · 2.65 KB

036-anillos.livemd

File metadata and controls

160 lines (120 loc) · 2.65 KB

36 - Anillos de Poder

LOS ANILLOS DE PODER

Enunciado

¡La Tierra Media está en guerra! En ella lucharán razas leales a Sauron contra otras bondadosas que no quieren que el mal reine sobre sus tierras. Cada raza tiene asociado un "valor" entre 1 y 5:

  • Razas bondadosas: Pelosos (1), Sureños buenos (2), Enanos (3), Númenóreanos (4), Elfos (5)
  • Razas malvadas: Sureños malos (2), Orcos (2), Goblins (2), Huargos (3), Trolls (5) Crea un programa que calcule el resultado de la batalla entre los 2 tipos de ejércitos:
  • El resultado puede ser que gane el bien, el mal, o exista un empate. Dependiendo de la suma del valor del ejército y el número de integrantes.
  • Cada ejército puede estar compuesto por un número de integrantes variable de cada raza.
  • Tienes total libertad para modelar los datos del ejercicio.

Ej: 1 Peloso pierde contra 1 Orco, 2 Pelosos empatan contra 1 Orco, 3 Pelosos ganan a 1 Orco.

Solución

defmodule Good do
  def peloso do
    1
  end

  def sur do
    2
  end

  def enano do
    3
  end

  def numen do
    4
  end

  def elfo do
    5
  end
end
{:module, Good, <<70, 79, 82, 49, 0, 0, 7, ...>>, {:elfo, 0}}
defmodule Evil do
  def sur do
    -1
  end

  def orco do
    -2
  end

  def goblin do
    -3
  end

  def huargo do
    -4
  end

  def troll do
    -5
  end
end
{:module, Evil, <<70, 79, 82, 49, 0, 0, 7, ...>>, {:troll, 0}}
defmodule Army do
  def choose(type, amount) do
    type * amount
  end
end
{:module, Army, <<70, 79, 82, 49, 0, 0, 5, ...>>, {:choose, 2}}
defmodule Battle do
  def begin(characters) do
    case Enum.sum(characters) do
      0 -> "Empate"
      result when result > 0 -> "Gana el Bien"
      _ -> "Gana el Mal"
    end
  end
end
{:module, Battle, <<70, 79, 82, 49, 0, 0, 6, ...>>, {:begin, 1}}
Battle.begin([
  Army.choose(Good.sur(), 2),
  Army.choose(Evil.orco(), 3)
])
"Gana el Mal"
Battle.begin([
  Good.elfo(),
  Evil.troll()
])
"Empate"
Battle.begin([Good.elfo(), Evil.orco()])
"Gana el Bien"