حساب الجناس التصحيفي (Anagrams) في Elixir
13 أكتوبر 2020
الجناس التصحيفي (anagram) هو كلمة أو عبارة تتكوّن بإعادة ترتيب حروف كلمة أو عبارة أخرى، وعادةً باستخدام جميع الحروف الأصلية مرة واحدة بالضبط
على سبيل المثال:
- "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
انتهينا، أصبحت لديكم الآن أداة لحساب الجناس التصحيفي!