|
| 1 | +# Reto 47: La palabra de 100 puntos |
| 2 | + |
| 3 | +## Enunciado |
| 4 | + |
| 5 | +La última semana de 2021 comenzamos la actividad de retos de programación, con la intención de resolver un ejercicio cada semana para mejorar nuestra lógica... ¡Hemos llegado al EJERCICIO 100! Gracias 🙌 |
| 6 | + |
| 7 | +Crea un programa que calcule los puntos de una palabra. |
| 8 | + |
| 9 | +- Cada letra tiene un valor asignado. Por ejemplo, en el abecedario español de 27 letras, la A vale 1 y la Z 27. |
| 10 | +- El programa muestra el valor de los puntos de cada palabra introducida. |
| 11 | +- El programa finaliza si logras introducir una palabra de 100 puntos. |
| 12 | +- Puedes usar la terminal para interactuar con el usuario y solicitarle cada palabra. |
| 13 | + |
| 14 | +## My solution |
| 15 | + |
| 16 | +```js |
| 17 | +const readline = require('readline'); |
| 18 | + |
| 19 | +const letterAValue = 'a'.charCodeAt(0); |
| 20 | + |
| 21 | +const rl = readline.createInterface({ |
| 22 | + input: process.stdin, |
| 23 | + output: process.stdout, |
| 24 | +}); |
| 25 | + |
| 26 | +const getResume = (word) => [...word] |
| 27 | + .map((letter) => `${letter} = ${letter.charCodeAt(0) - letterAValue + 1}\n`) |
| 28 | + .join(''); |
| 29 | + |
| 30 | +function calculatePoints(word) { |
| 31 | + let points = 0; |
| 32 | + for (let i = 0; i < word.length; i++) { |
| 33 | + const letter = word[i]; |
| 34 | + if (letter >= 'a' && letter <= 'z') { |
| 35 | + points += letter.charCodeAt(0) - letterAValue + 1; |
| 36 | + } |
| 37 | + } |
| 38 | + return points; |
| 39 | +} |
| 40 | + |
| 41 | +function jugar() { |
| 42 | + rl.question('Introduce una palabra: ', (word) => { |
| 43 | + const points = calculatePoints(word.toLowerCase()); |
| 44 | + console.log(`\nPuntos de "${word}": ${points}`); |
| 45 | + console.log(`${getResume(word)}`); |
| 46 | + |
| 47 | + if (points === 100) { |
| 48 | + console.log('¡Felicidades! Has alcanzado 100 puntos.'); |
| 49 | + rl.close(); |
| 50 | + } else { |
| 51 | + jugar(); |
| 52 | + } |
| 53 | + }); |
| 54 | +} |
| 55 | + |
| 56 | +jugar(); |
| 57 | +``` |
0 commit comments