자연수의 제곱근울 sqrt
함수 없이 구하는 문제였다. 참고용으로 링크된 문서(위키피디아)를 보니 여러 추정법이 있었는데, 막상 테스트 케이스를 보니 전부 숫자가 크지 않은 자연수 제곱근이라 그냥 적당히 구현했다.
defmodule SquareRoot do
@doc """
Calculate the integer square root of a positive integer
"""
@spec calculate(radicand :: pos_integer) :: pos_integer
def calculate(radicand) do
case radicand do
v when v in 1..10_000 ->
1..100 |> Enum.find(fn a -> a * a == radicand end)
v when v in 10_000..1_000_000 ->
100..1_000 |> Enum.find(fn a -> a * a == radicand end)
end
end
end
'호두나무 공방 > Exercism in Elixir' 카테고리의 다른 글
Meetup - Exercism in Elixir (0) | 2022.09.05 |
---|---|
Complex Numbers - Exercism in Elixir (0) | 2022.08.19 |
Pythagorean Triplet - Exercism in Elixir (0) | 2022.08.17 |
Custom Set - Exercism in Elixir (0) | 2022.08.16 |
Diffie Hellman - Exercism in Elixir (0) | 2022.08.15 |