간단한 거듭제곱 문제였다. 이 정도 문제는 안 올려도 되나 싶긴 하지만, 기록차 남겨 둔다.
defmodule Grains do
@doc """
Calculate two to the power of the input minus one.
"""
@spec square(pos_integer()) :: {:ok, pos_integer()} | {:error, String.t()}
def square(number) when number in 1..64 do
{:ok, Integer.pow(2, number - 1)}
end
def square(_number) do
{:error, "The requested square must be between 1 and 64 (inclusive)"}
end
@doc """
Adds square of each number from 1 to 64.
"""
@spec total :: {:ok, pos_integer()}
def total do
1..64
|> Enum.map(&(&1 |> square() |> elem(1)))
|> Enum.sum()
|> then(fn x -> {:ok, x} end)
end
end
'호두나무 공방 > Exercism in Elixir' 카테고리의 다른 글
House - Exercism in Elixir (0) | 2022.07.19 |
---|---|
ISBN Verifier - Exercism in Elixir (0) | 2022.07.18 |
Grade School - Exercism in Elixir (0) | 2022.07.01 |
Binary Search Tree - Exercism in Elixir (0) | 2022.06.30 |
DnD Character - Exercism in Elixir (0) | 2022.06.29 |