- Ejecutores
-
Aprender
Aprender Python Ejemplos ejecutables, NumPy, pandas y más Aprender IARedes neuronales, ML y LLM desde cero Aprender C y C++ Punteros, memoria, STL y C++ moderno Aprender C#Fundamentos, POO, LINQ, async y ejercicios de .NET Aprender MatplotlibGráficos de líneas, barras, dispersión y sectores con visualizadores Algoritmos en Python Búsqueda, ordenación, recursión y visualizadores O(n) Algoritmos en C y C++ Compara implementaciones en C y C++ Programación para niños ¡Aprende a programar jugando!
- RetosNuevo
- Para docentesNuevo
- Actualizaciones
- Invítame a un café
Un algoritmo genético mejora una población de soluciones candidatas como lo hace la evolución: selecciona padres aptos, los combina y añade mutaciones aleatorias. Aquí los candidatos son cadenas de bits y la aptitud es el número de 1 (el problema OneMax).
Para que se pueda probar, cada elección aleatoria se proporciona. Con N cadenas (N par), construye N hijos por parejas. Para la pareja k = 0, 1, …, N/2 - 1:
- Selección: parent1 gana el torneo
tournaments[2k]y parent2 ganatournaments[2k + 1]. Un torneo[i, j]lo gana la depopulation[i]ypopulation[j]que tenga más 1; en caso de empate, ganapopulation[i]. - Cruce en c =
crossover_points[k]: hijo 2k = parent1[0:c] + parent2[c:] e hijo 2k + 1 = parent2[0:c] + parent1[c:].
Después aplica cada mutación [child, position] en orden invirtiendo ese bit de ese hijo.
Implementa ga_generation(population, tournaments, crossover_points, mutations).
Entrada
population: N cadenas de bits de la misma longitud L.
tournaments: N parejas de índices de la población.
crossover_points: N/2 puntos de corte, cada uno entre 1 y L - 1.
mutations: Parejas [child, position] (puede estar vacío).
Salida
Devuelve los N hijos en orden.
Restricciones
2 ≤ N ≤ 200 (N par), 2 ≤ L ≤ 64
0 ≤ número de mutaciones ≤ 1.000
Ejemplos
Ejemplo 1
Entrada:
population = ["0000", "1111", "1100", "0011"]
tournaments = [
[0, 1],
[2, 3],
[1, 2],
[0, 3]
]
crossover_points = [2, 1]
mutations = [
[0, 0]
]
Salida esperada:
["0100", "1111", "1011", "0111"]
Explicación
Pareja 0: "1111" vence a "0000", y "1100" empata con "0011", así que gana la primera. Cortar tras 2 bits da "1100" y "1111". Pareja 1: padres "1111" y "0011", corte tras 1 bit: "1011" y "0111". Por último, al hijo 0 se le invierte el bit 0: "0100".
Ejemplo 2
Entrada:
population = ["10", "01"]
tournaments = [
[0, 1],
[1, 0]
]
crossover_points = [1]
mutations = []
Salida esperada:
["11", "00"]
Explicación
Ambas cadenas tienen un 1, así que cada torneo lo gana su primer índice: parent1 = "10" y parent2 = "01". Cortar tras 1 bit da "11" y "00".
Referencias
-
Ejemplo 1 Sin ejecutarEntrada:
population = ["0000", "1111", "1100", "0011"] tournaments = [ [0, 1], [2, 3], [1, 2], [0, 3] ] crossover_points = [2, 1] mutations = [ [0, 0] ]Salida esperada:["0100", "1111", "1011", "0111"]Tu salida -
Ejemplo 2 Sin ejecutarEntrada:
population = ["10", "01"] tournaments = [ [0, 1], [1, 0] ] crossover_points = [1] mutations = []Salida esperada:["11", "00"]Tu salida
4 pruebas ocultas también se ejecutan al enviar. Si tu código falla alguna, verás esa prueba. Resuelve el reto para verlas todas.
Online Java Compiler
Write, compile, run, and debug Java code online in a full-featured browser IDE. Work with multiple files, save your workspace, and share or collaborate in real time - no setup required.
🚀 260,407 ejecuciones totales (5,853 este mes)
Practica Java con desafíos de código
Resuelve problemas prácticos en este editor: ejecuta las pruebas de ejemplo, envía tu solución y recibe una revisión de código por IA.
☕ Acerca de este ejecutor de Java en línea
El Ejecutor de Java de CodeUtility te permite escribir y ejecutar programas Java directamente en tu navegador - sin instalación, configuración de JDK ni IDE. Funciona con un sandbox seguro que admite versiones reales del runtime de Java 8, 11, 17, 21 y la más reciente.
Esta herramienta compila y ejecuta código Java en la nube usando un compilador javac real y un entorno de ejecución de Java,
para que puedas probar clases, métodos y lógica exactamente como se comportarían de forma local.
Ya sea que estés practicando programación orientada a objetos, preparándote para entrevistas o probando fragmentos antes de la integración, el Ejecutor de Java de CodeUtility ofrece un entorno rápido y confiable para ejecutar código Java real al instante desde cualquier dispositivo.
Más que un ejecutor de código
Utiliza un editor de varios archivos, un terminal de ejecución aislado, bibliotecas específicas del entorno, espacios de trabajo persistentes, opciones para compartir y colaboración en tiempo real desde el mismo ejecutor.
¿Cómo se utiliza este ejecutor?
Elige un entorno de ejecución, abre o crea un archivo, escribe el código y selecciona Ejecutar. El resultado aparece en el terminal; los usuarios que han iniciado sesión pueden conservar archivos en un espacio de trabajo, instalar bibliotecas y colaborar mediante elementos compartidos.
- Selecciona una versión y edita el archivo actual o abre otro archivo del espacio de trabajo.
- Ejecuta el código, introduce datos en el terminal cuando se soliciten y revisa el historial de ejecuciones guardado.
- Utiliza bibliotecas, herramientas del espacio de trabajo, opciones para compartir y el chat cuando la tarea requiera más de un fragmento.
💡 Conceptos básicos de Java y ejemplos que puedes probar arriba
1. Declaración de variables y constantes
Java requiere que declares el tipo de cada variable. Usa final para constantes.
int age = 30;
double pi = 3.14159;
char grade = 'A';
String name = "Alice";
boolean isActive = true;
// Constantes
final int MAX_USERS = 100;
final String COMPANY = "CodeUtility";
2. Condicionales (if / switch)
Usa if, else if y switch para el control de flujo.
int x = 2;
if (x == 1) {
System.out.println("Uno");
} else if (x == 2) {
System.out.println("Dos");
} else {
System.out.println("Otro");
}
switch (x) {
case 1:
System.out.println("Uno");
break;
case 2:
System.out.println("Dos");
break;
default:
System.out.println("Otro");
}
3. Bucles
Usa for, while y do-while para iterar.
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
int n = 3;
while (n > 0) {
System.out.println(n);
n--;
}
4. Arreglos
Los arreglos almacenan secuencias de tamaño fijo del mismo tipo.
int[] numbers = {10, 20, 30};
System.out.println(numbers[1]);
5. Manipulación de ArrayList
Usa ArrayList para listas de tamaño dinámico.
import java.util.ArrayList;
ArrayList<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);
nums.remove(Integer.valueOf(2));
for (int num : nums) {
System.out.print(num + " ");
}
6. Entrada/salida por consola
Usa Scanner para la entrada y System.out para la salida.
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Escribe tu nombre: ");
String name = scanner.nextLine();
System.out.println("Hola, " + name);
7. Funciones
Define métodos con tipos de retorno y parámetros.
public static int add(int a, int b) {
return a + b;
}
System.out.println(add(3, 4));
8. HashMap
Usa HashMap para almacenar pares clave-valor.
import java.util.HashMap;
HashMap<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
System.out.println(ages.get("Alice"));
9. Manejo de excepciones
Usa try y catch para manejar excepciones en tiempo de ejecución.
try {
throw new Exception("Algo salió mal");
} catch (Exception e) {
System.out.println(e.getMessage());
}
10. Entrada/salida de archivos
Usa Files y Paths de java.nio.file para manejar archivos.
import java.nio.file.*;
import java.io.IOException;
Files.writeString(Paths.get("file.txt"), "Hola archivo");
String content = Files.readString(Paths.get("file.txt"));
System.out.println(content);
11. Manipulación de cadenas
Las cadenas en Java admiten muchos métodos como length(), substring() y contains().
String text = "Hola Mundo";
System.out.println(text.length());
System.out.println(text.substring(0, 5));
System.out.println(text.contains("Mundo"));
12. Clases y objetos
Java admite programación orientada a objetos usando clases e instancias.
class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("Hola, soy " + name);
}
}
Person p = new Person("Alice");
p.greet();