InstruçÔes
construir uma ferramenta de revisar texto
Neste laboratĂłrio, vocĂȘ vai construir uma ferramenta de revisar texto que analisa arrays de palavras para palĂndromos e frases repetidas.
Um palĂndromo Ă© uma palavra que se lĂȘ igual da frente para trĂĄs e de trĂĄs para frente. Por exemplo,
"racecar" e "level" sĂŁo palĂndromos, mas "hello" nĂŁo Ă©.
Uma frase Ă© uma sequĂȘncia de palavras consecutivas. Por exemplo, em ["the", "cat", "sat", "the", "cat"], a frase "the cat" (uma sequĂȘncia de 2 palavras) aparece nas posiçÔes 0 e 3.
Objetivo: Atenda às user stories abaixo e faça todos os testes passarem para completar o laboratório.
User stories:
1. VocĂȘ deve definir uma função chamada isPalindrome que recebe uma string word como argumento. Ela deve retornar true se a palavra for um palĂndromo (ignorando maiĂșsculas e minĂșsculas) e false caso contrĂĄrio.
2. VocĂȘ deve definir uma função chamada findPalindromeBreaks que recebe um array words como argumento. Ela deve retornar um array com os Ăndices das palavras que nĂŁo sĂŁo palĂndromos. Deve retornar um array vazio se a entrada estiver vazia.
3. VocĂȘ deve definir uma função chamada findRepeatedPhrases que recebe um array words e um nĂșmero phraseLength como argumentos. Ela deve retornar um array com todos os Ăndices iniciais onde uma sequĂȘncia de phraseLength palavras consecutivas aparece mais de uma vez no array â incluindo o Ăndice da primeira ocorrĂȘncia. Deve retornar um array vazio se phraseLength for maior ou igual ao comprimento de words. SequĂȘncias sobrepostas tambĂ©m devem ser contadas.
4. VocĂȘ deve definir uma função chamada analyzeTexts que recebe um array texts e um nĂșmero phraseLength como argumentos. Ela deve processar cada elemento de texts (cada um um array de palavras) e retornar um array de objetos, cada um com as propriedades repeatedPhrases e palindromeBreaks. Deve retornar um array vazio se texts estiver vazio.
O que fazer:
Testes:
- `isPalindrome` deve ser uma função.
- `isPalindrome` deve retornar `true` para um palĂndromo.
- `isPalindrome` deve retornar `true` independentemente de maiĂșsculas ou minĂșsculas.
- `isPalindrome` deve retornar `false` para uma palavra que nĂŁo Ă© palĂndromo.
- `findPalindromeBreaks` deve ser uma função.
- `findPalindromeBreaks` deve retornar um array vazio para entrada vazia.
- `findPalindromeBreaks` deve retornar os Ăndices das palavras que nĂŁo sĂŁo palĂndromos.
- `findPalindromeBreaks` deve retornar um array vazio quando todas as palavras forem palĂndromos.
- `findRepeatedPhrases` deve ser uma função.
- `findRepeatedPhrases` deve retornar um array vazio quando `phraseLength` for maior ou igual ao comprimento de `words`.
- `findRepeatedPhrases` deve retornar um array vazio quando `phraseLength` for maior que o comprimento de `words`.
- `findRepeatedPhrases` deve retornar todos os Ăndices iniciais onde a frase se repete, incluindo a primeira ocorrĂȘncia.
- `findRepeatedPhrases` deve retornar todos os Ăndices iniciais para frases repetidas sobrepostas.
- `analyzeTexts` deve ser uma função.
- `analyzeTexts` deve retornar um array vazio para entrada vazia.
- `analyzeTexts` objetos de resultado devem ter as propriedades `repeatedPhrases` e `palindromeBreaks`.
- `analyzeTexts` deve agregar corretamente os resultados para cada texto.
- `analyzeTexts` deve processar mĂșltiplos textos e retornar um resultado para cada um.
Preview