// Reto: contar cuántas veces aparece cada caracter en un texto.
// Entrada: "banana"
// Salida esperada: { b: 1, a: 3, n: 2 }
// Solución: iteramos el texto y usamos un objeto como contador.
// Por cada caracter, sumamos 1 a su conteo (o empezamos en 1 si es nuevo).
function contarCaracteres(texto) {
const conteo = {};
for (const caracter of texto) {
conteo[caracter] = (conteo[caracter] || 0) + 1;
}
return conteo;
}
// Versión alternativa con reduce (misma idea, distinta sintaxis).
function contarConReduce(texto) {
return [...texto].reduce((acc, caracter) => {
acc[caracter] = (acc[caracter] || 0) + 1;
return acc;
}, {});
}
console.log(contarCaracteres("banana")); // { b: 1, a: 3, n: 2 }
console.log(contarCaracteres("aabbc")); // { a: 2, b: 2, c: 1 }
console.log(contarConReduce("hola")); // { h: 1, o: 1, l: 1, a: 1 }
console.log(contarCaracteres("")); // {} (caso límite: texto vacío)
// Explicación:
// conteo[caracter] || 0 devuelve el conteo actual, o 0 si el caracter
// todavía no existe en el objeto. Sumamos 1 y lo guardamos. Así vamos
// acumulando la frecuencia de cada caracter.
module.exports = { contarCaracteres, contarConReduce };