Треки
/
Elixir
Elixir
/
Вправи
/
Шкільне кохання
Шкільне кохання

Шкільне кохання

Навчальна вправа

Вступ

Рядки тексту

Рядки тексту (англ. string) в Elixir обмежуються подвійними лапками і кодуються в UTF-8:

"Hi!"

Рядки тексту можна зʼєднувати за допомогою оператора <>/2:

"Welcome to" <> " " <> "New York"
# => "Welcome to New York"

Рядки тексту в Elixir підтримують інтерполяцію за допомогою синтаксису #{}:

"6 * 7 = #{6 * 7}"
# => "6 * 7 = 42"

Щоб додати в рядок тексту символ нового рядка, використайте керуючу послідовність \n:

"1\n2\n3\n"

А щоб зручно працювати з текстами, у яких багато символів нового рядка, використайте натомість синтаксис heredoc із потрійними подвійними лапками:

"""
1
2
3
"""

Elixir надає багато функцій для роботи з рядками тексту в модулі String.

Оператор конвеєра

Оператор |> називається оператором конвеєра. Його можна використовувати, щоб обʼєднувати виклики функцій у ланцюжок так, що значення, повернене попереднім викликом функції, передається як перший аргумент наступному виклику функції.

"hello"
|> String.upcase()
|> Kernel.<>("?!")

# => "HELLO?!"

Вказівки

У цій вправі ми допоможемо закоханим старшокласникам освідчитися в коханні в соціальних мережах, згенерувавши ASCII-рамку з їхніми ініціалами:

❤-------------------❤
|  J. K.  +  M. B.  |
❤-------------------❤

1. Отримати першу літеру імені

Реалізуйте функцію HighSchoolSweetheart.first_letter/1. Вона приймає імʼя та повертає його першу літеру. Вона також має прибрати з імені всі зайві пробіли.

HighSchoolSweetheart.first_letter("Jane")
# => "J"

2. Оформити першу літеру як ініціал

Реалізуйте функцію HighSchoolSweetheart.initial/1. Вона приймає імʼя та повертає його першу літеру у верхньому регістрі, після якої стоїть крапка. Обовʼязково використайте функцію HighSchoolSweetheart.first_letter/1, яку ми визначили на попередньому кроці.

HighSchoolSweetheart.initial("Robert")
# => "R."

3. Розділити повне імʼя на імʼя та прізвище

Реалізуйте функцію HighSchoolSweetheart.initials/1. Вона приймає повне імʼя, що складається з імені та прізвища, розділених пробілом, і повертає ініціали. Обовʼязково використайте функцію HighSchoolSweetheart.initial/1, яку ми визначили на попередньому кроці.

HighSchoolSweetheart.initials("Lance Green")
# => "L. G."

4. Розмістити ініціали всередині ASCII-рамки

Реалізуйте функцію HighSchoolSweetheart.pair/2. Вона приймає два повні імені та повертає ініціали всередині ASCII-рамки. Малювати рамку самостійно не потрібно, скористайтеся рамкою, наведеною в коментарі до коду. Обовʼязково використайте функцію HighSchoolSweetheart.initials/1, яку ми визначили на попередньому кроці.

HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => """
# ❤-------------------❤
# |  B. M.  +  R. L.  |
# ❤-------------------❤
# """
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Elixir Exercism

Час розпочати Шкільне кохання?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.