Crie uma tabela de turno único por participantes
Quatro times como Falcons, Owls, Ravens e Hawks jogam 3 rodadas e 6 partidas, e todos enfrentam todos uma única vez. Cole sua lista para obter as rodadas numeradas, cada confronto e uma folga por rodada quando o número for ímpar. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Participantes
- Falcons, Owls, Ravens, Hawks
- Número de participantes
- 4
- Número de rodadas
- 3
- Número de partidas
- 6
Transforme uma lista de equipes, jogadores, clubes ou outros participantes em uma tabela completa de turno único. O gerador usa o método circular padrão: mantém uma posição fixa e gira as demais entre as rodadas para que cada participante enfrente todos os outros exatamente uma vez. Listas pares preenchem todas as vagas em cada rodada. Em listas ímpares, uma folga automática é distribuída por rodada, de modo que cada participante descanse uma vez. O resultado contém rodadas numeradas, confrontos explícitos, eventuais folgas e totais. O processamento é local, determinístico e reproduzível: a mesma lista ordenada sempre gera a mesma tabela, sem rede, sorteio ou dados externos variáveis.
Prepare uma lista de participantes consistente
Comece com pelo menos dois nomes na ordem desejada para o círculo inicial. Um participante pode ser uma equipe, atleta, grupo escolar, clube de jogos ou qualquer competidor distinto. Espaços nas extremidades são removidos antes do processamento, mas todo nome ainda precisa ser um texto não vazio e exclusivo.
Rótulos exclusivos tornam cada confronto inequívoco; se houver duas equipes chamadas Tigres, acrescente cidade, divisão, número ou iniciais. O limite é de 1000 participantes, embora uma tabela completa cresça rapidamente porque todas as duplas possíveis precisam aparecer. Dois participantes geram uma partida; dez geram 45.
A ordem enviada altera a distribuição dos confrontos entre as rodadas, mas nunca o conjunto ou a quantidade total. Mantenha essa ordem estável quando precisar reproduzir a tabela em testes, publicações ou integrações. Menos de dois itens, nomes vazios ou repetidos, valores que não sejam texto ou listas acima do limite retornam erro de entrada inválida, sem produzir uma tabela parcial.
Entenda o resultado do método circular
O método circular cria um turno único equilibrado sem pesquisa, adivinhação ou embaralhamento. Com uma quantidade par, uma posição fica fixa e as demais giram após cada rodada; posições opostas formam os confrontos. Assim, uma lista par com n participantes exige n menos 1 rodadas e possui n dividido por 2 partidas em cada uma.
Com quantidade ímpar, o algoritmo acrescenta internamente uma posição vazia. Quem fica diante dela recebe a folga, registrada na rodada em vez de virar uma partida fictícia. Uma lista ímpar exige n rodadas, tem n menos 1 dividido por 2 partidas reais em cada rodada e concede uma folga a cada participante.
Cada rodada recebe numeração a partir de 1 e um array matches com participant1 e participant2; tabelas ímpares também incluem bye. Cada dupla aparece uma vez, ninguém joga duas partidas na mesma rodada e o total segue a fórmula combinatória esperada.
Publique, adapte e integre os confrontos
Use as rodadas como estrutura inicial do calendário e acrescente datas, locais, mesas, árbitros, transmissões ou quadras conforme suas necessidades. O método circular resolve o pareamento, mas não escolhe datas reais nem considera disponibilidade, viagens, feriados, descanso, equilíbrio de mando ou preferências de transmissão. Essas decisões pertencem a uma etapa posterior.
Para ida e volta, gere primeiro o turno único e crie o segundo turno invertendo cada confronto em seu fluxo. Em um formulário web, envie os nomes como array e apresente cada rodada em uma seção. Em competições ímpares, exiba bye claramente para que a folga não pareça dado ausente.
Casos de uso
Tabela de liga comunitária
Gere cada confronto uma vez para uma liga local e depois atribua campos, datas e arbitragem às rodadas numeradas.
Programação de grupos de esports
Monte uma fase de grupos reproduzível em que cada jogador ou equipe enfrente todos os demais uma única vez.
Rodízios escolares e de clubes
Forme duplas em rodadas equilibradas para debates, treinos, avaliações entre pares ou outras atividades.
Perguntas frequentes
O que acontece quando há um número ímpar de participantes?
O gerador atribui uma folga por rodada. Cada participante recebe exatamente uma folga na tabela completa.
Cada participante enfrenta todos os outros?
Sim. Como é um turno único, cada dupla não ordenada aparece exatamente uma vez nos confrontos.
Dois participantes podem ter o mesmo nome?
Não. Os nomes devem ser exclusivos após a remoção de espaços externos, garantindo confrontos inequívocos.
O gerador define datas ou locais?
Não. Ele cria apenas rodadas, confrontos e folgas. Acrescente depois datas, locais e restrições operacionais.
Quantas rodadas e partidas meu torneio terá?
Com um número par de participantes, há uma rodada a menos que o número de participantes e metade disso em partidas por rodada. Quatro times jogam seis partidas em três rodadas; dez jogam quarenta e cinco em nove rodadas.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"participants": [
"Falcons",
"Owls",
"Ravens",
"Hawks"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.round_robin_schedule",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Entenda o resultado do método circular
A resposta preserva a lista normalizada e informa participant_count, round_count, match_count e o array rounds.
Publique, adapte e integre os confrontos
Em uma integração de API, salve os totais para validação e percorra rounds e matches ao criar eventos. Solicitações de API bem-sucedidas usam o preço-base publicado de US$ 0,002 por item. Como a implementação não usa horário, aleatoriedade, rede nem modelo externo, entradas idênticas sempre produzem o mesmo JSON, facilitando testes, regeneração, comparação de versões e colaboração entre organizadores.
Perguntas técnicas
Quanto custa uma solicitação de API?
Uma solicitação bem-sucedida custa US$ 0,002 por item. O cálculo determinístico não usa rede nem serviço externo.