호두나무 공방/Exercism in Elixir

Anagram - Exercism in Elixir

2022. 5. 9. 22:46

문제 보기

여러 문자열을 받아 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