Percursos
/
Gleam
Gleam
/
Exercícios
/
Namorada do Secundário
Namorada do Secundário

Namorada do Secundário

Exercício de aprendizagem

Introdução

Operador pipe

O operador |> chama-se operador pipe. Podes usá-lo para encadear chamadas de funções, de modo a que o valor devolvido pela chamada de função anterior seja passado à chamada de função seguinte.

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

O código acima é equivalente ao seguinte:

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

O operador pipe passa o valor como primeiro argumento da chamada de função, ou como único argumento de uma nova chamada, consoante a opção que tiver o tipo correto.

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)

Por vezes queremos passar o valor para outra posição. Nesse caso, podemos usar o marcador _ para indicar onde o valor deve ser inserido.

100
|> some_function(1, _, 2)

Instruções

Neste exercício, vais ajudar um casal de namorados do secundário a declarar o seu amor nas redes sociais, gerando um coração em ASCII com as iniciais deles:

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

1. Obter a primeira letra do nome

Implementa a função first_letter. Deve receber um nome e devolver a sua primeira letra. Deve remover qualquer espaço desnecessário do nome.

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

2. Formatar a primeira letra como inicial

Implementa a função initial. Deve receber um nome e devolver a sua primeira letra, em maiúscula, seguida de um ponto. Certifica-te de que reutilizas a função first_letter que definiste no passo anterior.

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

3. Dividir o nome completo no primeiro nome e no último nome

Implementa a função initials. Deve receber um nome completo, composto por um primeiro nome e um último nome separados por um espaço, e devolver as iniciais. Certifica-te de que reutilizas a função initial que definiste no passo anterior.

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

4. Colocar as iniciais dentro do coração

Implementa a função pair. Deve receber dois nomes completos e devolver as iniciais dentro de um coração em ASCII. Certifica-te de que reutilizas a função initials que definiste no passo anterior.

pair("Blake Miller", "Riley Lewis")
// -> "
//      ******       ******
//    **      **   **      **
//  **         ** **         **
// **            *            **
// **                         **
// **     B. M.  +  R. L.     **
//  **                       **
//    **                   **
//      **               **
//        **           **
//          **       **
//            **   **
//              ***
//               *
// "
Editar via GitHub A ligação abre numa nova janela ou separador
Gleam Exercism

Estás pronto para começar Namorada do Secundário?

Inscreve-te no Exercism para aprenderes e dominares Gleam com 33 conceitos122 exercícios, e mentoria humana real, tudo grátis.