Evil Corp —el gigante que controla todo lo que consumes, lo que piensas y hasta lo que olvidas— cree tenerlo todo bajo control.
Pero no contaba contigo.
En un sótano lleno de cables, pantallas parpadeantes y tazas de café frías, un grupo de hackers conocidos como Atriumsociety prepara su próximo golpe digital. Su misión: devolver el poder a la gente, línea de código a línea de código.
Tu papel comienza aquí.
Eres parte del equipo. Hoy no vienes a “hacer ejercicios”, vienes a infiltrarte en el sistema, Cada array que declares es una base de datos secreta, cada bucle un intento de intrusión, cada condicional una decisión que puede cambiarlo todo.
Prepárate: el prompt está parpadeando.
Atriumsociety te necesita.
1. “Elliot vs Evil Corp”
Enunciado:
Elliot ha interceptado una lista con los balances de Evil Corp.
Con el siguiente array:
int[] balances = {12000, -50, 5000, 15000, 0, -300, 800, 22000, 9999, 100};
Muestra:
- Cuántas cuentas tienen saldo negativo.
- Cuántas tienen saldo superior a 10 000 $.
- El saldo medio.
Qué se hace
- Recorremos
balances - Contamos negativos (
<0) - Contamos los que superan 10.000 (
>10000) - Sumamos todo para el promedio
Código
public class ElliotVsEvilCorp {
public static void main(String[] args) {
int[] balances = {12000, -50, 5000, 15000, 0, -300, 800, 22000, 9999, 100};
int negativos = 0;
int masDe10000 = 0;
int suma = 0;
for (int i = 0; i < balances.length; i++) {
int b = balances[i];
if (b < 0) negativos++;
if (b > 10000) masDe10000++;
suma += b;
}
double media = (double) suma / balances.length;
System.out.println("Cuentas con saldo negativo: " + negativos);
System.out.println("Cuentas con saldo superior a 10000$: " + masDe10000);
System.out.printf("Saldo medio: %.2f%n", media);
}
}
2. “Backdoor Scanner”
Enunciado:
Darlene analiza si los servidores de Evil Corp están vulnerables.
Usa el siguiente array:
boolean[] vulnerables = {false, true, false, false, true, false, true, false};
Muestra:
- Cuántos servidores son vulnerables (
true). - En qué posiciones están.
Qué se hace
- Recorremos el array de
boolean - Si es
true, contamos y mostramos la posición
Código
public class BackdoorScanner {
public static void main(String[] args) {
boolean[] vulnerables = {false, true, false, false, true, false, true, false};
int contador = 0;
System.out.print("Servidores vulnerables en posiciones: ");
for (int i = 0; i < vulnerables.length; i++) {
if (vulnerables[i]) {
contador++;
System.out.print(i + " ");
}
}
System.out.println();
System.out.println("Total vulnerables: " + contador);
}
}
3. “Password Audit”
Enunciado:
Elliot encuentra las siguientes contraseñas antiguas de Evil Corp:
String[] passwords = {"admin123", "e@mpl3", "supersecure99", "pass", "root@2020"};
Indica:
- Cuántas contienen el carácter
@. - Cuántas tienen más de 8 caracteres.
- Cuántas terminan en un número.
- Cuál es la más larga.
Qué se hace
Para cada contraseña:
contains("@")→ cuenta las que tienen@length() > 8→ largas- “termina en número” → miramos el último carácter con
charAty comprobamos si es dígito - “la más larga” → guardamos la que tenga mayor longitud
Código
public class PasswordAudit {
public static void main(String[] args) {
String[] passwords = {"admin123", "e@mpl3", "supersecure99", "pass", "root@2020"};
int conArroba = 0;
int masDe8 = 0;
int terminanEnNumero = 0;
String masLarga = passwords[0];
for (int i = 0; i < passwords.length; i++) {
String p = passwords[i];
if (p.contains("@")) conArroba++;
if (p.length() > 8) masDe8++;
char ultimo = p.charAt(p.length() - 1);
if (Character.isDigit(ultimo)) terminanEnNumero++;
if (p.length() > masLarga.length()) {
masLarga = p;
}
}
System.out.println("Contraseñas con @: " + conArroba);
System.out.println("Contraseñas con más de 8 caracteres: " + masDe8);
System.out.println("Contraseñas que terminan en número: " + terminanEnNumero);
System.out.println("La más larga es: " + masLarga + " (" + masLarga.length() + " caracteres)");
}
}
4. “Hack the Gibson”
Enunciado:
Simula los niveles de éxito de los ataques de Elliot con el siguiente array:
int[] intentos = {82, 13, 45, 79, 90, 5, 33, 72, 18, 65, 40, 100, 29, 10, 67, 55, 88, 60, 14, 3};
Muestra:
- El valor máximo y el mínimo.
- Cuántos intentos fueron “exitosos” (más de 70).
- Si todos son menores de 30, muestra “Mr Robot sospecha que estás desconectado”.
Qué se hace
- Máximo y mínimo: inicializamos con el primer elemento y comparamos
- Exitosos:
>70 - “si todos son menores de 30”: bandera
todosMenor30(true al inicio, se rompe si encontramos uno >= 30)
Código
public class HackTheGibson {
public static void main(String[] args) {
int[] intentos = {82, 13, 45, 79, 90, 5, 33, 72, 18, 65, 40, 100, 29, 10, 67, 55, 88, 60, 14, 3};
int max = intentos[0];
int min = intentos[0];
int exitosos = 0;
boolean todosMenor30 = true;
for (int i = 0; i < intentos.length; i++) {
int v = intentos[i];
if (v > max) max = v;
if (v < min) min = v;
if (v > 70) exitosos++;
if (v >= 30) {
todosMenor30 = false;
}
}
System.out.println("Máximo: " + max);
System.out.println("Mínimo: " + min);
System.out.println("Intentos exitosos (>70): " + exitosos);
if (todosMenor30) {
System.out.println("Mr Robot sospecha que estás desconectado");
}
}
}
5. “Logs del Servidor”
Enunciado:
Angela revisa los registros de acceso de un servidor:
String[] logs = {"OK", "ERROR", "OK", "OK", "ERROR", "OK", "ERROR", "ERROR", "OK", "OK"};
Cuenta:
- Cuántos accesos fueron
"OK". - Cuántos
"ERROR". - Si hay más errores que accesos correctos, muestra “Servidor en peligro”.
Qué se hace
- Contar
"OK"y"ERROR"usandoequals - Comparar: si
errores > ok→ aviso
Código
public class LogsDelServidor {
public static void main(String[] args) {
String[] logs = {"OK", "ERROR", "OK", "OK", "ERROR", "OK", "ERROR", "ERROR", "OK", "OK"};
int ok = 0;
int error = 0;
for (int i = 0; i < logs.length; i++) {
if (logs[i].equals("OK")) ok++;
else if (logs[i].equals("ERROR")) error++;
}
System.out.println("OK: " + ok);
System.out.println("ERROR: " + error);
if (error > ok) {
System.out.println("Servidor en peligro");
}
}
}
6. “Temperaturas del Servidor”
Enunciado:
Durante un ataque, Elliot monitoriza las temperaturas del servidor:
int[] temperaturas = {45, 49, 52, 57, 60, 59, 55, 48, 46, 50};
Calcula:
- La temperatura media.
- Cuántas mediciones superan los 55 °C.
- Si todas las temperaturas están por debajo de 60 °C, muestra “Sistema estable”; si alguna es 60 o más, muestra “¡Sobrecalentamiento detectado!”.
Qué se hace
- Media: suma / total
- Contar
>55 - Comprobar si alguna es
>=60(banderasobrecalentamiento)
Código
public class TemperaturasServidor {
public static void main(String[] args) {
int[] temperaturas = {45, 49, 52, 57, 60, 59, 55, 48, 46, 50};
int suma = 0;
int superan55 = 0;
boolean sobrecalentamiento = false;
for (int i = 0; i < temperaturas.length; i++) {
int t = temperaturas[i];
suma += t;
if (t > 55) superan55++;
if (t >= 60) sobrecalentamiento = true;
}
double media = (double) suma / temperaturas.length;
System.out.printf("Temperatura media: %.2f%n", media);
System.out.println("Mediciones que superan 55°C: " + superan55);
if (!sobrecalentamiento) {
System.out.println("Sistema estable");
} else {
System.out.println("¡Sobrecalentamiento detectado!");
}
}
}
7. “DDoS Simulator”
Enunciado:
Durante un ataque DDoS, se registran los siguientes tiempos de respuesta (en ms):
int[] tiempos = {200, 540, 720, 150, 950, 330, 480, 510, 870, 610};
Muestra:
- La media, el máximo y el mínimo.
- Si más del 60 % supera los 500 ms, muestra “Servidor saturado”.
- Si menos del 10 % supera los 200 ms, muestra “Ataque fallido”.
Qué se hace
- Media, máximo, mínimo (igual que antes)
- Contar cuántos superan 500 → para porcentaje
- Si
(superan500 / total) > 0.60→ “Servidor saturado” - Si
(superan200 / total) < 0.10→ “Ataque fallido”- Nota: “supera 200” significa
>200, no>=200.
- Nota: “supera 200” significa
Código
public class DDoSSimulator {
public static void main(String[] args) {
int[] tiempos = {200, 540, 720, 150, 950, 330, 480, 510, 870, 610};
int suma = 0;
int max = tiempos[0];
int min = tiempos[0];
int superan500 = 0;
int superan200 = 0;
for (int i = 0; i < tiempos.length; i++) {
int t = tiempos[i];
suma += t;
if (t > max) max = t;
if (t < min) min = t;
if (t > 500) superan500++;
if (t > 200) superan200++;
}
double media = (double) suma / tiempos.length;
double porcentaje500 = (double) superan500 / tiempos.length;
double porcentaje200 = (double) superan200 / tiempos.length;
System.out.printf("Media: %.2f ms%n", media);
System.out.println("Máximo: " + max + " ms");
System.out.println("Mínimo: " + min + " ms");
if (porcentaje500 > 0.60) {
System.out.println("Servidor saturado");
}
if (porcentaje200 < 0.10) {
System.out.println("Ataque fallido");
}
}
}


![R7 [Solución] - Guerra por el Sistema Solar: Tierra, Marte y el Cinturón” (The Expanse) Captura de pantalla 2025-12-22 a las 20.54.03](https://laaventuradeaprender.com/wp-content/uploads/2025/12/Captura-de-pantalla-2025-12-22-a-las-20.54.03-1.png)





![R3.1 [Solución] - Programación-bucles profe](https://laaventuradeaprender.com/wp-content/uploads/2025/12/profe-2.png)
![R3.2 [Solución] Programación-Bucles profe](https://laaventuradeaprender.com/wp-content/uploads/2025/12/profe.png)