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

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

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

Вступ

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

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

"hello"
|> string.uppercase
|> string.append("?!")
// -> "HELLO?!"

Наведений вище код еквівалентний такому:

string.append(string.uppercase("hello"), "?!")

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

100
|> function_that_takes_two_arguments(1)

// Is equivalent to
function_that_takes_two_arguments(100, 1)
100
|> function_that_returns_a_function(1)

// Is equivalent to
function_that_returns_a_function(1)(100)

Іноді ми хочемо передати значення в іншу позицію. У такому разі можна використати заповнювач _, щоб указати, куди саме слід вставити значення.

100
|> some_function(1, _, 2)

Вказівки

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

     ******       ******
   **      **   **      **
 **         ** **         **
**            *            **
**                         **
**     J. K.  +  M. B.     **
 **                       **
   **                   **
     **               **
       **           **
         **       **
           **   **
             ***
              *

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

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

first_letter("Jane")
// -> "J"

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

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

initial("Robert")
// -> "R."

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

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

initials("Lance Green")
// -> "L. G."

4. Помістити ініціали всередину серця

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

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

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

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