From 65bb4e24c5d53f43d92a0f4788a7e32cd960e92c Mon Sep 17 00:00:00 2001 From: marco cruz Date: Tue, 5 Dec 2023 00:02:46 -0600 Subject: [PATCH] :sparkles: add challenge-47 solution --- 2023/47-palabra-de-100-puntos/README.md | 57 +++++++++++++++++++++++ 2023/47-palabra-de-100-puntos/solution.js | 40 ++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 2023/47-palabra-de-100-puntos/README.md create mode 100644 2023/47-palabra-de-100-puntos/solution.js diff --git a/2023/47-palabra-de-100-puntos/README.md b/2023/47-palabra-de-100-puntos/README.md new file mode 100644 index 0000000..238ee61 --- /dev/null +++ b/2023/47-palabra-de-100-puntos/README.md @@ -0,0 +1,57 @@ +# Reto 47: La palabra de 100 puntos + +## Enunciado + +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 🙌 + +Crea un programa que calcule los puntos de una palabra. + +- Cada letra tiene un valor asignado. Por ejemplo, en el abecedario español de 27 letras, la A vale 1 y la Z 27. +- El programa muestra el valor de los puntos de cada palabra introducida. +- El programa finaliza si logras introducir una palabra de 100 puntos. +- Puedes usar la terminal para interactuar con el usuario y solicitarle cada palabra. + +## My solution + +```js +const readline = require('readline'); + +const letterAValue = 'a'.charCodeAt(0); + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +const getResume = (word) => [...word] + .map((letter) => `${letter} = ${letter.charCodeAt(0) - letterAValue + 1}\n`) + .join(''); + +function calculatePoints(word) { + let points = 0; + for (let i = 0; i < word.length; i++) { + const letter = word[i]; + if (letter >= 'a' && letter <= 'z') { + points += letter.charCodeAt(0) - letterAValue + 1; + } + } + return points; +} + +function jugar() { + rl.question('Introduce una palabra: ', (word) => { + const points = calculatePoints(word.toLowerCase()); + console.log(`\nPuntos de "${word}": ${points}`); + console.log(`${getResume(word)}`); + + if (points === 100) { + console.log('¡Felicidades! Has alcanzado 100 puntos.'); + rl.close(); + } else { + jugar(); + } + }); +} + +jugar(); +``` diff --git a/2023/47-palabra-de-100-puntos/solution.js b/2023/47-palabra-de-100-puntos/solution.js new file mode 100644 index 0000000..df3a555 --- /dev/null +++ b/2023/47-palabra-de-100-puntos/solution.js @@ -0,0 +1,40 @@ +const readline = require('readline'); + +const letterAValue = 'a'.charCodeAt(0); + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +const getResume = (word) => [...word] + .map((letter) => `${letter} = ${letter.charCodeAt(0) - letterAValue + 1}\n`) + .join(''); + +function calculatePoints(word) { + let points = 0; + for (let i = 0; i < word.length; i++) { + const letter = word[i]; + if (letter >= 'a' && letter <= 'z') { + points += letter.charCodeAt(0) - letterAValue + 1; + } + } + return points; +} + +function jugar() { + rl.question('Introduce una palabra: ', (word) => { + const points = calculatePoints(word.toLowerCase()); + console.log(`\nPuntos de "${word}": ${points}`); + console.log(`${getResume(word)}`); + + if (points === 100) { + console.log('¡Felicidades! Has alcanzado 100 puntos.'); + rl.close(); + } else { + jugar(); + } + }); +} + +jugar();