Cree un calendario de todos contra todos
Cuatro equipos como Falcons, Owls, Ravens y Hawks juegan 3 jornadas y 6 partidos, y todos se enfrentan con todos una sola vez. Pegue su lista para obtener las jornadas numeradas, cada cruce y un descanso por jornada si el número es impar. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Participantes
- Falcons, Owls, Ravens, Hawks
- Número de participantes
- 4
- Número de rondas
- 3
- Número de partidos
- 6
Convierta una lista de equipos, jugadores, clubes u otros participantes en un calendario completo de todos contra todos. El generador aplica el método circular estándar: mantiene una posición fija y rota las demás entre rondas para que cada participante se enfrente exactamente una vez a todos los demás. Las listas pares ocupan todos los puestos de cada ronda. En las listas impares se asigna automáticamente un descanso por ronda, de modo que cada participante descanse una vez. El resultado incluye rondas numeradas, enfrentamientos explícitos, descansos y totales. El proceso es local, determinista y repetible: la misma lista ordenada siempre produce el mismo calendario, sin red, azar ni datos externos variables.
Prepare una lista de participantes limpia
Empiece con al menos dos nombres, colocados en el orden que quiera usar para el círculo inicial. Un participante puede ser un equipo, jugador, grupo escolar, club o cualquier competidor distinto. Los espacios exteriores se eliminan antes de crear el calendario, pero cada nombre debe seguir siendo una cadena no vacía y única.
Esta unicidad permite identificar cada cruce sin dudas; si hay dos equipos llamados Tigres, añada una ciudad, división o número. Se admiten hasta 1000 participantes, aunque el número de partidos crece con rapidez porque deben aparecer todas las parejas posibles. Dos participantes producen un partido, mientras que diez producen 45.
El orden de entrada cambia la distribución por rondas, pero no el conjunto ni el total de cruces. Manténgalo estable si necesita resultados reproducibles. Una lista con menos de dos elementos, nombres vacíos o repetidos, valores que no sean texto o más elementos de los permitidos devuelve un error de entrada no válida, nunca un calendario parcial.
Interprete el resultado del método circular
El método circular crea un torneo de una vuelta equilibrado sin búsquedas, sorteos ni mezclas. Con un número par, fija una posición y rota las restantes después de cada ronda; quienes quedan enfrentados en el círculo forman pareja. Así, una lista par de n participantes necesita n menos 1 rondas y contiene n dividido entre 2 partidos por ronda.
Con un número impar, el algoritmo añade internamente un puesto vacío. Quien queda frente a ese puesto recibe el descanso, que aparece en la ronda y no como un partido ficticio. Por eso una lista impar necesita n rondas, ofrece n menos 1 dividido entre 2 partidos reales por ronda y concede exactamente un descanso a cada participante.
Cada ronda tiene número desde 1 y un array matches con participant1 y participant2; las rondas impares también incluyen bye. Cada pareja aparece una sola vez y nadie disputa dos partidos en la misma ronda.
Publique, adapte e integre los cruces
Use las rondas como base estructural de su calendario y añada después fechas, sedes, mesas, árbitros, retransmisiones o pistas según sus restricciones. El método circular resuelve los emparejamientos, pero no elige fechas reales ni considera disponibilidad, viajes, festivos, descansos, equilibrio local-visitante o preferencias de emisión. Esas decisiones corresponden a una fase posterior.
Si necesita ida y vuelta, genere primero esta vuelta única y cree otra invirtiendo cada cruce en su propio flujo. En un formulario web, envíe los nombres como array y muestre cada ronda en una sección. En torneos impares, muestre claramente bye para que el descanso no parezca un dato ausente.
Qué puede hacer con ella
Calendario de una liga local
Genere una vez cada cruce de una liga deportiva y asigne después campos, fechas y árbitros a las rondas numeradas.
Programación de grupos de esports
Cree una fase de grupos reproducible donde cada jugador o equipo se enfrente una vez a todos los demás.
Rotaciones escolares y de clubes
Empareje grupos en rondas equilibradas para debates, prácticas, revisiones entre pares u otras actividades.
Preguntas frecuentes
¿Qué ocurre si el número de participantes es impar?
El generador asigna un descanso en cada ronda. Cada participante descansa exactamente una vez durante el calendario completo.
¿Todos se enfrentan a todos los demás?
Sí. Es un torneo de una vuelta, por lo que cada pareja no ordenada aparece exactamente una vez.
¿Pueden dos participantes tener el mismo nombre?
No. Los nombres deben ser únicos tras eliminar espacios exteriores para que cada enfrentamiento sea inequívoco.
¿El generador asigna fechas o sedes?
No. Solo crea rondas, cruces y descansos. Añada después fechas, sedes y restricciones operativas.
¿Cuántas jornadas y partidos tendrá mi torneo?
Con un número par de participantes hay una jornada menos que participantes y la mitad de partidos por jornada. Cuatro equipos juegan seis partidos en tres jornadas; diez juegan cuarenta y cinco en nueve jornadas.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/game/round-robin-schedule \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"participants":["Falcons","Owls","Ravens","Hawks"]}'const res = await fetch("https://api.kit.forhosting.com/game/round-robin-schedule", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"participants": [
"Falcons",
"Owls",
"Ravens",
"Hawks"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/round-robin-schedule",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"participants": [
"Falcons",
"Owls",
"Ravens",
"Hawks"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/round-robin-schedule", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"participants":["Falcons","Owls","Ravens","Hawks"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"participants":["Falcons","Owls","Ravens","Hawks"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/round-robin-schedule", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"participants": [
"Falcons",
"Owls",
"Ravens",
"Hawks"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.round_robin_schedule",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Interprete el resultado del método circular
La respuesta conserva la lista normalizada e incluye participant_count, round_count, match_count y el array rounds.
Publique, adapte e integre los cruces
Desde la API, guarde los totales para validar y recorra rounds y matches al crear eventos. Cada solicitud correcta cuesta $0.002 por elemento. Como no se usa hora, azar, red ni modelos externos, una entrada idéntica produce siempre el mismo JSON, algo útil para pruebas, regeneraciones y comparaciones de versiones.
Preguntas técnicas
¿Cuánto cuesta una solicitud de API?
Una solicitud correcta cuesta $0.002 por elemento. El cálculo determinista no utiliza redes ni servicios externos.