مسیرها
/
Elixir
Elixir
/
تمرین‌ها
/
فهرست زبان‌ها
فهرست زبان‌ها

فهرست زبان‌ها

تمرین یادگیری

مقدمه

لیست

لیست‌ها در زبان Elixir توکار هستند. آن‌ها یک نوع پایه در نظر گرفته می‌شوند که با کروشه نشان داده می‌شوند. لیست‌ها می‌توانند خالی باشند یا هر تعداد عنصری از هر نوعی را در خود نگه دارند. برای مثال:

empty_list = []
one_item_list = [1]
two_item_list = [1, 2]
multiple_type_list = [1, :pi, 3.14, "four"]

Elixir لیست‌ها را به صورت یک لیست پیوندی پیاده‌سازی می‌کند که هر گره در آن دو مقدار را ذخیره می‌کند: اولین عنصر و لیست دیگری که همه‌ی عناصر باقی‌مانده را در خود دارد. به اولین عنصر لیست، «سر» و به لیست باقی‌مانده‌ی عناصر، «دم» می‌گویند. می‌توانیم از این نماد در کد استفاده کنیم:

# [1] represented in [head | tail] notation
[1 | []]

# [1, 2, 3] represented in [head | tail] notation
[1 | [2 | [3 | []]]]

می‌توانیم با نماد [head | tail] عنصرها را به ابتدای لیست اضافه کنیم:

# Suppose
list = [2, 1]

[3, 2, 1] == [3 | list]
# => true

در ماژول Kernel چندین تابع برای کار با لیست‌ها وجود دارد، و همچنین کل ماژول List.

# Check if 1 is a member of the list
1 in [1, 2, 3, 4]
# => true

دستورالعمل‌ها

در این تمرین باید چند تابع پیاده‌سازی کنید تا فهرستی از زبان‌های برنامه‌نویسی را دست‌کاری کنند.

1. تابعی تعریف کنید که یک فهرست زبان خالی برگرداند

تابع new/0 را تعریف کنید که هیچ آرگومانی نمی‌گیرد و یک فهرست خالی برمی‌گرداند.

LanguageList.new()
# => []

2. تابعی تعریف کنید که زبانی را به فهرست اضافه کند

تابع add/2 را تعریف کنید که ۲ آرگومان می‌گیرد (یک فهرست زبان و یک رشته‌ی متنی که یک زبان را نشان می‌دهد). باید زبان جدید را به ابتدای فهرست داده‌شده اضافه کند و فهرست حاصل را برگرداند.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]

3. تابعی تعریف کنید که زبانی را از فهرست حذف کند

تابع remove/1 را تعریف کنید که ۱ آرگومان می‌گیرد (یک فهرست زبان). باید فهرستی را برگرداند که اولین عنصر آن حذف شده است. فرض کنید فهرست همیشه حداقل یک عنصر دارد.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]
language_list = LanguageList.remove(language_list)
# => ["Clojure"]

4. تابعی تعریف کنید که اولین عنصر فهرست را برگرداند

تابع first/1 را تعریف کنید که ۱ آرگومان می‌گیرد (یک فهرست زبان). باید اولین زبان فهرست را برگرداند. فرض کنید فهرست همیشه حداقل یک عنصر دارد.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.first(language_list)
# => "Prolog"

5. تابعی تعریف کنید که تعداد زبان‌های فهرست را برگرداند

تابع count/1 را تعریف کنید که ۱ آرگومان می‌گیرد (یک فهرست زبان). باید تعداد زبان‌های فهرست را برگرداند.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.count(language_list)
# => 2

6. تابعی تعریف کنید که تعیین کند آیا فهرست شامل یک زبان تابعی است یا نه

تابع functional_list?/1 را تعریف کنید که ۱ آرگومان می‌گیرد (یک فهرست زبان). باید یک «مقدار منطقی» برگرداند. اگر «Elixir» یکی از زبان‌های فهرست باشد، باید «درست» را برگرداند.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Elixir Exercism

آماده‌اید فهرست زبان‌ها را شروع کنید؟

در Exercism ثبت‌نام کنید تا Elixir را همراه با 58 مفهوم168 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.