- 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 Go Compiler
Write, compile, run, and debug Go code online in a full-featured browser IDE. Work with multiple files, save your workspace, and collaborate in real time - no setup required.
🚀 206,970 ejecuciones totales (799 este mes)
Practica Go 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 Go en línea
El CodeUtility Go Executor te permite escribir y ejecutar código Go directamente en tu navegador - sin instalación, configuración ni entorno local. Está impulsado por un sandbox seguro que soporta versiones reales del compilador de Go 1.19, 1.20 y 1.21.
Esta herramienta compila y ejecuta programas reales de Go en la nube, ofreciéndote un entorno auténtico de Go. Puedes probar fragmentos cortos, experimentar con paquetes y explorar las potentes funciones de concurrencia de Go usando goroutines y canales.
Es perfecta para aprender y practicar los conceptos básicos de Go como variables, funciones, structs, slices, mapas, interfaces y manejo de errores - todo sin instalar herramientas localmente.
Ya sea que estés explorando Go por primera vez, probando lógica de backend o aprendiendo cómo funciona la concurrencia, el CodeUtility Go Executor ofrece una forma limpia, rápida y basada en el navegador para ejecutar código Go al instante.
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 Go y ejemplos que puedes probar arriba
1. Declaración de variables y constantes
Usa var o := para declarar variables. Usa const para constantes.
package main
var x int = 10
const Pi = 3.14
func main() {
name := "Alice"
isActive := true
println(x, Pi, name, isActive)
}
2. Condicionales (if / switch)
Go soporta sentencias if-else y switch con una sintaxis clara.
x := 2
if x == 1 {
println("Uno")
} else if x == 2 {
println("Dos")
} else {
println("Otro")
}
switch x {
case 1:
println("Uno")
case 2:
println("Dos")
default:
println("Otro")
}
3. Bucles
Go solo usa el bucle for, pero puede comportarse como un bucle while.
for i := 0; i < 3; i++ {
println(i)
}
n := 3
for n > 0 {
println(n)
n--
}
4. Arreglos
Los arreglos tienen tamaño fijo. Usa slices para listas dinámicas.
var nums = [3]int{10, 20, 30}
println(nums[1])
5. Manipulación de slices
Usa slices y las funciones integradas append, len, copy y la sintaxis de slicing.
fruits := []string{"apple", "banana"}
fruits = append(fruits, "cherry")
fruits = fruits[1:] // slice
println(len(fruits))
for _, fruit := range fruits {
println(fruit)
}
6. Entrada/Salida por consola
Usa fmt.Print, fmt.Scan y fmt.Println.
import "fmt"
var name string
fmt.Print("Ingresa tu nombre: ")
fmt.Scan(&name)
fmt.Println("Hola", name)
7. Funciones
Las funciones se declaran con func y pueden devolver múltiples valores.
func greet(name string) string {
return "Hola, " + name
}
message := greet("Alice")
println(message)
8. Mapas
Los mapas son almacenes clave-valor. Decláralos con make().
ages := map[string]int{"Alice": 30}
ages["Bob"] = 25
println(ages["Alice"])
9. Manejo de errores
Go usa múltiples valores de retorno para los errores en lugar de excepciones.
import "errors"
func fail() error {
return errors.New("algo salió mal")
}
err := fail()
if err != nil {
println(err.Error())
}
10. E/S de archivos
Usa los paquetes os y io/ioutil para leer/escribir archivos.
import (
"fmt"
"os"
"io/ioutil"
)
ioutil.WriteFile("file.txt", []byte("Hola archivo"), 0644)
data, _ := ioutil.ReadFile("file.txt")
fmt.Println(string(data))
11. Manipulación de cadenas
Usa el paquete strings para operaciones con cadenas.
import "strings"
text := " Hola Mundo "
println(strings.TrimSpace(text))
println(strings.ToUpper(text))
println(strings.ReplaceAll(text, "Hola", "Buenas"))
words := strings.Split(text, " ")
fmt.Println(words)
12. Structs y objetos
Usa structs para definir tipos personalizados con métodos.
type Person struct {
Name string
}
func (p Person) Greet() string {
return "Hola, soy " + p.Name
}
p := Person{Name: "Alice"}
println(p.Greet())
13. Referencias (punteros)
Go admite punteros usando * y &.
x := 10
ptr := &x
*ptr = 20
println(x) // 20