Wow,é bem assim que eu faço (fiz). mas quando eu chego no impasse, e vou ver a resposta, tem várias linhas que eu fico pensando (mas como assim?). São umas coisas que parecem que não faz parte da sintaxe da linguagem e aí eu penso, "por que ele escreveu isso?". Por exemplo;
for (const palavra of palavras) {
palavrasUnicas[palavra] = true;
}
eu não entendo a parte que ele inicializa a variavel palavra (dentro do loop). quero dizer, como essa variável interege com o restante do código?
código completo:
function contarPalavrasUnicas(texto) {
// Remover pontuações e converter para minúsculas
const palavras = texto.toLowerCase().replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g, '').split(/\s+/);
// Criar um objeto para armazenar as palavras únicas
const palavrasUnicas = {};
// Contar as palavras únicas
for (const palavra of palavras) {
palavrasUnicas[palavra] = true;
}
// Retornar o número de palavras únicas
return Object.keys(palavrasUnicas).length;
}
// Exemplo de uso
const textoExemplo = "Olá, mundo! Olá, programação.";
const resultado = contarPalavrasUnicas(textoExemplo);
console.log(resultado);
as outras linhas eu compreendi, mas é isso que me deixa pensativo; será que eu conseguiria executar uma lógica assim, toda certinha, "redondinha"?
A mesma coisa nesse código abaixo, eu não consigo entender a linha do laço (FOR), tipo; a parte {adicionaraoconjunto(...)} essa parte é uma exoressão do javascript ou é só uma frase de multipla escolha?
function contadorPalavrasUnicas() {
// Passo 1: Entrada
let texto = prompt("Digite o texto:");
// Passo 2: Preprocessamento
texto = converterParaMinusculas(removerPontuacoes(texto));
// Passo 3: Divisão em Palavras
let listaPalavras = dividirEmPalavras(texto);
// Passo 4: Contagem de Palavras Únicas
let conjuntoPalavrasUnicas = new Set();
for (let palavra of listaPalavras) {
adicionarAoConjunto(conjuntoPalavrasUnicas, palavra);
}
// Passo 5: Saída
console.log("Número de palavras únicas no texto:", tamanhoDoConjunto(conjuntoPalavrasUnicas));
}
function converterParaMinusculas(texto) {
// Implementar a conversão para minúsculas
return texto.toLowerCase();
}
function removerPontuacoes(texto) {
// Implementar a remoção de pontuações
return texto.replace(/[^\w\s]/g, "");
}
function dividirEmPalavras(texto) {
// Implementar a divisão do texto em palavras
return texto.split(/\s+/);
}
function adicionarAoConjunto(conjunto, elemento) {
// Implementar a adição de um elemento ao conjunto
// (tratando o elemento como case-insensitive)
conjunto.add(elemento.toLowerCase());
}
function tamanhoDoConjunto(conjunto) {
// Implementar a obtenção do tamanho do conjunto
return conjunto.size;
}
// Chamar a função principal
contadorPalavrasUnicas();