Skip to content

Latest commit

 

History

History
80 lines (58 loc) · 1.35 KB

014-armstrong.livemd

File metadata and controls

80 lines (58 loc) · 1.35 KB

14 - Número Armstrong

¿ES UN NÚMERO DE ARMSTRONG?

Enunciado

Escribe una función que calcule si un número dado es un número de Amstrong (o también llamado narcisista). Si no conoces qué es un número de Armstrong, debes buscar información al respecto.

Solución

defmodule Armstrong do
  def is?(number) do
    normalized = abs(number)

    chars =
      to_string(normalized)
      |> String.graphemes()

    power = Enum.count(chars)

    sum =
      Enum.map(chars, fn num ->
        String.to_integer(num)
        |> Integer.pow(power)
      end)
      |> Enum.sum()

    normalized == sum
  end
end
{:module, Armstrong, <<70, 79, 82, 49, 0, 0, 8, ...>>, {:is?, 1}}
defmodule Solution do
  def run(number) do
    Armstrong.is?(number)
  end
end
{:module, Solution, <<70, 79, 82, 49, 0, 0, 6, ...>>, {:run, 1}}
Solution.run(-371)
true
Solution.run(371)
true