forked from mouredev/hello-javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path05.AnillosPoder.js
More file actions
54 lines (49 loc) · 1.8 KB
/
05.AnillosPoder.js
File metadata and controls
54 lines (49 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
* EJERCICIO:
* ¡La temporada 2 de "Los Anillos de Poder" está a punto de estrenarse!
* ¿Qué pasaría si tuvieras que encargarte de repartir los anillos
* entre las razas de la Tierra Media?
* Desarrolla un programa que se encargue de distribuirlos.
* Requisitos:
* 1. Los Elfos recibirán un número impar.
* 2. Los Enanos un número primo.
* 3. Los Hombres un número par.
* 4. Sauron siempre uno.
* Acciones:
* 1. Crea un programa que reciba el número total de anillos
* y busque una posible combinación para repartirlos.
* 2. Muestra el reparto final o el error al realizarlo.
*/
function esPrimo(num) {
if (num < 2) return false;
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
function repartirAnillos(total) {
if (total < 4) {
console.log("❌ No hay suficientes anillos para repartir correctamente.");
return;
}
const anillosDisponibles = total - 1; // 1 para Sauron
for (let elfos = 1; elfos <= anillosDisponibles; elfos += 2) { // solo impares
for (let enanos = 2; enanos <= anillosDisponibles - elfos; enanos++) {
const hombres = anillosDisponibles - elfos - enanos;
if (esPrimo(enanos) && hombres >= 0 && hombres % 2 === 0) {
console.log(`✅ Reparto válido para ${total} anillos:`);
console.log(`🧝♂️ Elfos: ${elfos}`);
console.log(`⛏️ Enanos: ${enanos}`);
console.log(`🧔♂️ Hombres: ${hombres}`);
console.log(`🧌 Sauron: 1`);
return;
}
}
}
console.log("❌ No se pudo encontrar un reparto válido.");
}
// EJEMPLOS:
repartirAnillos(20);
repartirAnillos(15);
repartirAnillos(7);
repartirAnillos(3); // no válido