---
title: "حساب الجناس التصحيفي (Anagrams) في Elixir"
description: "على سبيل المثال:"
canonical: https://oozou.com/til/calculate-anagrams-in-elixir-23
locale: ar
date: 2020-10-13
topic: elixir
---

# حساب الجناس التصحيفي (Anagrams) في Elixir

> على سبيل المثال:

Published: 2020-10-13 · Topic: [elixir](https://oozou.com/ar/til-topics/elixir) ([markdown](https://oozou.com/ar/til-topics/elixir.md))

> الجناس التصحيفي (anagram) هو كلمة أو عبارة تتكوّن بإعادة ترتيب حروف كلمة أو عبارة أخرى، وعادةً باستخدام جميع الحروف الأصلية مرة واحدة بالضبط

على سبيل المثال:

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

أنشئوا مشروعًا جديدًا باستخدام *mix new anagram*، ثم لنكتب بعض حالات الاختبار:

```elixir
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
```

والآن علينا كتابة الكود:

```elixir
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*:

```shell
Compiling 1 file (.ex)
Generated anagram app
.

Finished in 0.1 seconds
1 test, 0 failures

Randomized with seed 752850
```

انتهينا، أصبحت لديكم الآن أداة لحساب الجناس التصحيفي!

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/ar/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
