Distribuição de cadeiras pelo maior resto grátis
Transforme votos em cadeiras inteiras pelo método do maior resto: 416.000, 338.000 e 246.000 votos para 10 cadeiras com a cota Hare dão 4, 3 e 3 cadeiras. Escolha a cota Hare ou a Droop e veja o resto de cada partido. 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
- Votos por partido
- 416.000, 338.000, 246.000
- Cadeiras a distribuir
- 10
- Nomes dos partidos (opcional)
- A, B, C
- Método do quociente
- Hare (votos totais ÷ cadeiras)
- Método do quociente
- Hare
- Quociente eleitoral
- 100.000
Distribui cadeiras pelo método do maior resto (Hamilton) com quota de Hare ou Droop. Gratuito, determinístico e privado no seu navegador. Não é necessária conta. Não é necessária conta.
Como as cadeiras são distribuídas pelo maior resto
Sistemas proporcionais precisam de cadeiras inteiras, mas os votos quase nunca se dividem de forma exata. O método do maior resto, também chamado de Hamilton, resolve isso em duas rodadas. Primeiro define uma cota, a quantidade de votos que vale uma cadeira, e dá a cada partido tantas cadeiras quantas cotas completas ele tiver, sempre arredondando para baixo. Depois, as cadeiras livres vão uma a uma para os partidos com os maiores restos. No exemplo, 10 cadeiras são divididas entre 416.000, 338.000 e 246.000 votos. Com uma cota Hare de 100.000, a primeira rodada dá 4, 3 e 2 cadeiras e sobra uma. Os restos são 0,16, 0,38 e 0,46, então a última cadeira vai para o terceiro partido e a divisão final fica 4, 3 e 3.
Erros a evitar ao conferir uma distribuição
A maioria dos erros acontece na primeira rodada. Arredondar para o inteiro mais próximo em vez de para baixo quebra o método, porque essa rodada só pode entregar cotas completas. Dar as cadeiras que sobram aos partidos mais votados em vez dos maiores restos muda o resultado, como mostra o terceiro partido do exemplo. A cota também importa: confira se as suas regras pedem a cota Hare ou a Droop antes de comparar resultados. A calculadora é útil para lições e provas sobre sistemas eleitorais, quando você quer uma resposta estável para comparar com a sua.
Casos de uso
Lição de casa e provas
Confira rapidamente problemas quantitativos clássicos com respostas estáveis e reproduzíveis.
Automação
Chame a mesma função pura a partir de scripts, sem instalar uma planilha ou um CAS.
Perguntas frequentes
Isto é gratuito?
Sim. O tier A roda inteiramente no seu navegador, sem conta.
Ele acessa a rede?
Não. O motor parse mantém tudo no próprio dispositivo.
Como o método do maior resto distribui as cadeiras?
Primeiro cada partido recebe uma cadeira para cada cota completa de votos, sempre arredondando para baixo. As cadeiras que sobram vão depois, uma a uma, para os partidos com os maiores restos até preencher o total.
Por que um partido com menos cotas completas leva a última cadeira?
Porque as cadeiras que sobram seguem os restos, não o total de votos. No exemplo o terceiro partido tem só 2 cotas completas, mas o resto de 0,46 é o maior, então ele leva a última das 10 cadeiras e termina com 3.
Quais cotas posso usar?
Você pode escolher a cota Hare ou a cota Droop. Com a Hare, o milhão de votos do exemplo dividido por 10 cadeiras dá uma cota de 100.000 votos por cadeira, e toda a distribuição parte desse número.
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/math/largest-remainder \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"votes":[416000,338000,246000],"seats":10}'const res = await fetch("https://api.kit.forhosting.com/math/largest-remainder", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"votes": [
416000,
338000,
246000
],
"seats": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/largest-remainder",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"votes": [
416000,
338000,
246000
],
"seats": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/largest-remainder", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"votes":[416000,338000,246000],"seats":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"votes":[416000,338000,246000],"seats":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/largest-remainder", 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
{
"votes": [
416000,
338000,
246000
],
"seats": 10
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.largest_remainder",
"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
Como funciona
Cada partido recebe floor(votos/quota) cadeiras e, em seguida, as cadeiras restantes vão para os maiores restos fracionários, em ordem. A implementação é totalmente determinística e roda de graça no navegador com a mesma função pura do caminho da API. As entradas são validadas antes de qualquer cálculo, de modo que tipos incorretos e valores out-of-range viram erros invalid_input claros em vez de resultados NaN silenciosos. A implementação é totalmente determinística e roda de graça no navegador com a mesma função pura do caminho da API. As entradas são validadas antes de qualquer cálculo, de modo que tipos incorretos e valores out-of-range viram erros invalid_input claros em vez de resultados NaN silenciosos. A implementação é totalmente determinística e roda de graça no navegador com a mesma função pura do caminho da API. As entradas são validadas antes de qualquer cálculo, de modo que tipos incorretos e valores out-of-range viram erros invalid_input claros em vez de resultados NaN silenciosos.
Entradas e saídas
Os campos obrigatórios precisam estar presentes e com o tipo correto. Os campos opcionais usam padrões documentados. As mensagens de erro usam trechos de correspondência estáveis em inglês para o harness. Distribui cadeiras pelo método do maior resto (Hamilton) com quota de Hare ou Droop. Informe os campos listados no schema de entrada. O payload de sucesso sempre inclui os campos de resultado principais indicados no schema de saída, para que os clientes consigam vincular métricas de UI sem adivinhação. A implementação é totalmente determinística e roda de graça no navegador com a mesma função pura do caminho da API. As entradas são validadas antes de qualquer cálculo, de modo que tipos incorretos e valores out-of-range viram erros invalid_input claros em vez de resultados NaN silenciosos. A implementação é totalmente determinística e roda de graça no navegador com a mesma função pura do caminho da API. As entradas são validadas antes de qualquer cálculo, de modo que tipos incorretos e valores out-of-range viram erros invalid_input claros em vez de resultados NaN silenciosos.
Casos-limite e limitações
Rejeita total de votos igual a zero e nomes de quota inválidos. Intervalos vazios ou contraditórios são rejeitados logo de início. Valores intermediários extremamente grandes que estouram o IEEE-754 viram um erro out-of-range em vez de campos nulos. A implementação é totalmente determinística e roda de graça no navegador com a mesma função pura do caminho da API. As entradas são validadas antes de qualquer cálculo, de modo que tipos incorretos e valores out-of-range viram erros invalid_input claros em vez de resultados NaN silenciosos. A implementação é totalmente determinística e roda de graça no navegador com a mesma função pura do caminho da API. As entradas são validadas antes de qualquer cálculo, de modo que tipos incorretos e valores out-of-range viram erros invalid_input claros em vez de resultados NaN silenciosos.
Casos de integração
Demonstrações em aula
Mostre exemplos resolvidos com fixtures golden que batem com o widget gratuito e com a API.
Perguntas técnicas
E se a minha entrada for inválida?
Você recebe invalid_input com uma mensagem clara em inglês.
Os resultados são estáveis?
Sim. A matemática determinística e os exemplos golden congelam o contrato.
Quem é o autor desta capacidade?
samurai, na oficina do KIT da ForHosting.