여러 문자열을 받아 base
와 애너그램 관계(문자의 순서를 바꿔서 같은 단어가 되는지)인 단어들을 찾는 문제였다. 원래 문자열(base
)과 같지 않고, 대소문자를 구분하지 않는다는 점이 약간의 고민 포인트가 될 듯. 어렵지는 않았다.
defmodule Anagram do
@spec match(String.t(), [String.t()]) :: [String.t()]
def match(base, candidates) do
sig_base = signature(base)
downcased_base = String.downcase(base)
candidates |> Enum.filter(fn candidate ->
String.downcase(candidate) != downcased_base and signature(candidate) == sig_base
end)
end
defp signature(str), do: str |> String.downcase() |> String.graphemes() |> Enum.sort()
end
'호두나무 공방 > Exercism in Elixir' 카테고리의 다른 글
Chessboard - Exercism in Elixir (0) | 2022.05.11 |
---|---|
Hamming - Exercism in Elixir (0) | 2022.05.10 |
Flatten Array - Exercism in Elixir (0) | 2022.05.07 |
All Your Base - Exercism in Elixir (0) | 2022.05.06 |
Acronym - Exercism in Elixir (0) | 2022.05.05 |