Skip to content

Commit 65bb4e2

Browse files
committed
✨ add challenge-47 solution
1 parent 852305c commit 65bb4e2

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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+
```
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const readline = require('readline');
2+
3+
const letterAValue = 'a'.charCodeAt(0);
4+
5+
const rl = readline.createInterface({
6+
input: process.stdin,
7+
output: process.stdout,
8+
});
9+
10+
const getResume = (word) => [...word]
11+
.map((letter) => `${letter} = ${letter.charCodeAt(0) - letterAValue + 1}\n`)
12+
.join('');
13+
14+
function calculatePoints(word) {
15+
let points = 0;
16+
for (let i = 0; i < word.length; i++) {
17+
const letter = word[i];
18+
if (letter >= 'a' && letter <= 'z') {
19+
points += letter.charCodeAt(0) - letterAValue + 1;
20+
}
21+
}
22+
return points;
23+
}
24+
25+
function jugar() {
26+
rl.question('Introduce una palabra: ', (word) => {
27+
const points = calculatePoints(word.toLowerCase());
28+
console.log(`\nPuntos de "${word}": ${points}`);
29+
console.log(`${getResume(word)}`);
30+
31+
if (points === 100) {
32+
console.log('¡Felicidades! Has alcanzado 100 puntos.');
33+
rl.close();
34+
} else {
35+
jugar();
36+
}
37+
});
38+
}
39+
40+
jugar();

0 commit comments

Comments
 (0)