Percursos
/
JavaScript
JavaScript
/
Exercícios
/
Política de portas do clube de poesia
Política de portas do clube de poesia

Política de portas do clube de poesia

Exercício de aprendizagem

Introdução

Uma string é o tipo de dados de JavaScript para armazenar dados de texto.

Criar uma string

Crias uma string ao envolver o texto em aspas simples ou aspas duplas. No Exercism, usamos aspas simples.

'Hello, World!'
"Hello, World!"

Strings como listas de carateres

Podemos tratar uma string como uma lista de carateres em que o primeiro caráter tem o índice 0. Podes aceder a um caráter individual da string com parênteses retos ([]) e o índice da letra que queres obter.

'cat'[1];
// => 'a'

Podes determinar o número de carateres de uma string acedendo à propriedade length.

'cat'.length;
// => 3

Concatenação e métodos

A forma mais simples de concatenar strings é usar o operador de adição +.

'I like' + ' ' + 'cats.';
// => "I like cats."

As strings disponibilizam muitos métodos auxiliares; consulta a documentação da MDN sobre métodos de string para veres a lista completa. A lista seguinte mostra alguns auxiliares usados com frequência.

Em JavaScript, as strings são imutáveis. Por isso, uma "modificação", por exemplo através de alguns dos métodos acima, cria sempre uma nova string.

Instruções

Abriu um novo clube de poesia na cidade e estás a pensar ir. Como já houve incidentes no passado, o clube tem uma política de acesso à porta muito específica que tens de dominar antes de tentares entrar.

No clube de poesia há duas portas, uma da frente e uma de trás, e ambas estão vigiadas. Para entrares, tens de descobrir a palavra-passe do dia.

A palavra-passe é sempre baseada num poema e pode ser obtida num processo de dois passos.

  1. O guarda recita o poema, verso a verso, e tu tens de responder com uma letra adequada desse verso.
  2. O guarda diz-te agora todas as letras com que respondeste de uma só vez, e tu tens de as escrever num papel com um formato específico.

Os detalhes do processo dependem da porta por onde estás a tentar entrar.

1. Obtém a primeira letra de uma frase

Para determinares as letras da palavra-passe da porta da frente, tens de responder com a primeira letra do verso do poema que o guarda te recita.

Para obterem uma palavra-passe bonita, os membros do clube de poesia gostam de usar poemas acrósticos. Isto significa que a primeira letra de cada frase forma uma palavra. Eis um exemplo de um dos seus escritores favoritos, Michael Lockwood.

Stands so high
Huge hooves too
Impatiently waits for
Reins and harness
Eager to leave

Por isso, quando o guarda recita Stands so high, respondes S; quando o guarda recita Huge hooves too, respondes H.

Implementa a função frontDoorResponse, que recebe um verso do poema como argumento e devolve a primeira letra desse verso.

frontDoorResponse('Stands so high');
// => "S"

2. Capitaliza uma palavra

Agora que tens todas as letras corretas, para obteres a palavra-passe da porta da frente só precisas de capitalizar a palavra corretamente.

Implementa a função frontDoorPassword, que aceita uma string (as letras combinadas que encontraste na tarefa 1) e devolve-a com a capitalização correta.

frontDoorPassword('SHIRE');
// => "Shire"

frontDoorPassword('shire');
// => "Shire"

3. Obtém a última letra de uma frase

Para determinares as letras da palavra-passe da porta de trás, tens de responder com a última letra do verso do poema que o guarda te recita.

Os membros do clube de poesia são mesmo espertos. O poema mencionado antes também é um telesticho, o que significa que a última letra de cada frase também forma uma palavra:

Stands so high
Huge hooves too
Impatiently waits for
Reins and harness
Eager to leave

Quando o guarda recita Stands so high, respondes h; quando o guarda recita Huge hooves too, respondes o.

Repara que, por vezes, o guarda faz pausas estilísticas (sob a forma de espaços em branco) no início ou no fim de um verso. Tens de ignorar essas pausas para obteres a letra correta.

Implementa a função backDoorResponse, que recebe um verso do poema como argumento e devolve a última letra desse verso que não seja um caráter de espaço em branco.

backDoorResponse('Stands so high');
// => "h"

backDoorResponse('Stands so high   ');
// => "h"

4. Sê educado

Para entrares no clube de poesia pela porta de trás, tens de ser muito educado. Por isso, para obteres a palavra-passe, desta vez tens de capitalizar a palavra corretamente e acrescentar ', please' no fim.

Implementa a função backDoorPassword, que aceita uma string (as letras combinadas que encontraste na tarefa 3) e devolve a versão educada da palavra-passe capitalizada.

backDoorPassword('horse');
// => "Horse, please"
Editar via GitHub A ligação abre numa nova janela ou separador
JavaScript Exercism

Estás pronto para começar Política de portas do clube de poesia?

Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.