OOZOU
お問い合わせ
TIL一覧に戻る
elixir

Elixir でアナグラムを計算する

2020年10月13日

アナグラムとは、別の単語やフレーズの文字を並べ替えて作られる単語やフレーズのことで、通常は元の文字をすべてちょうど一回ずつ使います

例:

  • "restful" = "fluster"
  • "funeral" = "real fun"
  • "adultery" = "true lady"
  • "customers" = "store scum"
  • "forty five" = "over fifty"

mix new anagram で新しいプロジェクトを作成して、テストケースを書いていきましょう:

defmodule AnagramTest do
  use ExUnit.Case

  test "calculates anagram" do
    assert Anagram.anagram?("restful", "fluster") == true
    assert Anagram.anagram?("funeral", "realfun") == true
    assert Anagram.anagram?("adultery", "truelady") == true
    assert Anagram.anagram?("customers", "storescum") == true
    assert Anagram.anagram?("fortyfive", "overfifty") == true
    assert Anagram.anagram?("fiftyfive", "overfifty") == false
    assert Anagram.anagram?("funeral", "real fun") == false
  end
end

次に、コードを書きます:

defmodule Anagram do
    def anagram?(a, b) do
    charlist(a) == charlist(b)
  end

  def charlist(w) do
    w |> String.trim() |> String.downcase() |> String.graphemes() |> Enum.sort()
  end
end

mix test でテストを実行します:

Compiling 1 file (.ex)
Generated anagram app
.

Finished in 0.1 seconds
1 test, 0 failures

Randomized with seed 752850

完成です。これでアナグラム計算機の出来上がりです!

プロジェクトをお考えですか?

あなたが構築しているものについてお聞かせください。

会話を始めるhello@oozou.com
OOZOU Logo

バンコク · シンガポール · 香港

X
Facebook
Instagram
LinkedIn

サービス

  • Web開発
  • AIエージェント & 生成AI
  • モバイルアプリ開発
  • データ分析 & エンジニアリング
  • UI/UX & プロダクトデザイン
  • デジタルトランスフォーメーション

会社情報

  • 会社概要
  • 採用情報
  • ブログ
  • 事例研究
  • Today I Learned
  • お問い合わせ

その他

  • 業界
  • パートナーネットワーク
© 2026 OOZOU. 無断転載を禁じます。
プライバシーポリシー行動規範ABACポリシー