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