Треки
/
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, яка приймає 2 аргументи (масив мов і рядок тексту (англ. string) мови). Вона має повернути отриманий масив, додавши нову мову на початок наданого масиву.

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

3. Визначте функцію, яка вилучає мову з масиву

Визначте функцію remove/1, яка приймає 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, яка приймає 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, яка приймає 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, яка приймає 1 аргумент (масив мов). Вона має повернути булеве значення (англ. Boolean). Вона має повертати правду, якщо 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 вправ та справжнє наставництво від людей, і все це безкоштовно.