Calculadora de anilhas
Digite o peso desejado e veja exatamente quais anilhas vão em cada lado: 100 kg com uma barra de 20 kg são 40 kg por lado, uma anilha de 25 e uma de 15. Sem arredondar se o alvo não puder ser montado. 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
- Peso total desejado (kg)
- 100
- Peso da barra (kg)
- 20
- Peso das anilhas por lado (kg)
- 40
- Peso total carregado (kg)
- 100
carga de barra grátis
Como montar a barra, passo a passo
Montar a barra é uma conta simples que fica fácil de errar numa academia cheia. Primeiro, tire do peso-alvo o peso da barra vazia; a barra padrão pesa 20 kg. Depois, divida o que sobrou por dois, porque os dois lados precisam ser iguais. Por fim, preencha cada lado começando pela anilha mais pesada que ainda cabe, depois a seguinte, até não sobrar nada. Com o jogo padrão de anilhas de 25, 20, 15, 10, 5, 2,5 e 1,25 kg, um alvo de 100 kg deixa 40 kg por lado, que viram uma anilha de 25 kg e outra de 15 kg. O resultado também mostra o total exato que você vai levantar.
Erros comuns na hora de montar a barra
O erro mais comum é esquecer a barra, o que deixa cada série mais pesada do que o planejado. Outro é montar os dois lados de forma diferente, o que inclina a barra. Com as anilhas padrão, a carga por lado anda de 1,25 em 1,25 kg, então alguns alvos simplesmente não podem ser montados; a calculadora avisa em vez de arredondar para um peso próximo. Se a sua academia tem outra barra ou outras anilhas, informe-as, porque uma montagem que conta com anilhas que você não tem não serve para nada. Valores convertidos de libras também funcionam, desde que tudo esteja na mesma unidade.
Alcançabilidade e os dois casos especiais
O conjunto padrão de anilhas tem um passo de máximo divisor comum de 1.25 kg, então as cargas por lado devem ser múltiplos desse passo para serem carregáveis. Você pode sobrescrever plates inteiramente para modelar o estoque da sua própria academia, incluindo valores fracionários ou convertidos de libras.
Casos de uso
Apps de academia e treino
Mostre a um praticante exatamente quais anilhas colocar em cada lado para um peso de trabalho prescrito, usando a própria barra dele.
Estoques de anilhas personalizados
Passe um array plates para corresponder ao estoque de uma academia em casa e detecte quando um alvo simplesmente não pode ser carregado.
Perguntas frequentes
Como ela decide quais anilhas usar?
Uma passagem gulosa das maiores primeiro sobre o conjunto de anilhas sem duplicatas e em ordem decrescente, carregando quantas de cada tamanho couberem por lado.
Quanto peso vai em cada lado da barra?
Subtraia a barra do peso-alvo e divida o resto por dois. Um alvo de 100 kg com barra de 20 kg deixa 80 kg em anilhas, então cada lado leva 40 kg.
Por que o meu peso-alvo não pode ser montado?
As anilhas disponíveis não somam exatamente o que cada lado precisa. Com o jogo padrão, cada lado tem de ser múltiplo de 1,25 kg; em vez de dar um valor aproximado, a calculadora avisa que o alvo não pode ser alcançado.
Posso usar as minhas próprias anilhas ou outra barra?
Sim. Informe as anilhas que a sua academia realmente tem, inclusive as fracionadas ou convertidas de libras, e digite o peso da sua barra. A montagem usa só o que você tem.
E se o alvo for igual à barra vazia ou mais leve?
Se o alvo for igual à barra, você não precisa de nenhuma anilha e levanta só a barra. Se for mais leve que a barra vazia, não dá para montar e a calculadora recusa.
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/dev/plate-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"target_kg":100}'const res = await fetch("https://api.kit.forhosting.com/dev/plate-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"target_kg": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/plate-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"target_kg": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/plate-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"target_kg":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"target_kg":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/plate-calculator", 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
{
"target_kg": 100
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.plate_calculator",
"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
Dado um target_kg, um bar_kg e uma lista opcional de anilhas disponíveis, devolve o carregamento das maiores primeiro para um lado da barra e o total exato alcançado.
O algoritmo guloso por lado
Ele elimina duplicatas da lista de anilhas em um conjunto, ordena em ordem decrescente e, para cada anilha, pega quantas couberem com Math.floor(remaining/p + 1e-12), subtraindo seu peso antes de passar para o próximo tamanho. Com os padrões (bar_kg 20 e o conjunto padrão de anilhas 25, 20, 15, 10, 5, 2.5, 1.25), um alvo de 100 kg deixa 80 kg de carga, 40 kg por lado, e a passagem gulosa devolve uma anilha de 25 kg e uma de 15 kg por lado, exatamente o exemplo entregue. Cada entrada em plates_per_side é um par {weight, count}, ordenado da mais pesada primeiro, descrevendo o que pendurar em uma extremidade da barra.
Alcançabilidade e os dois casos especiais
Após a passagem gulosa, se sobrar qualquer peso restante acima de 1e-6 kg, a carga não pode ser montada com as anilhas dadas e a chamada lança invalid_input, significando que o alvo não é alcançável com o conjunto de anilhas, em vez de devolver um carregamento aproximado. Dois casos especiais encurtam o algoritmo: se a carga for igual a zero (alvo igual à barra), ela devolve per_side_kg 0, um array plates_per_side vazio e total_kg igual à barra; se a carga for negativa (alvo abaixo da barra), ela lança invalid_input porque o alvo é mais leve que a barra vazia.
Entradas, validação e totais repetidos
target_kg deve ser um número finito maior que zero, e bar_kg deve ser um número finito de pelo menos zero, assumindo 20 quando omitido. O parâmetro plates, quando fornecido, deve ser um array não vazio no qual todo elemento é um número finito maior que zero; um não array, um array vazio ou uma anilha não positiva lança, cada um, um erro invalid_input tipado. Observe que esta capacidade não realiza nenhum arredondamento de pesos: per_side_kg é exatamente load/2 e total_kg é recalculado como bar_kg + 2*per_side_kg, então o total devolvido reflete o peso realmente carregado, e não o alvo solicitado, quando eles diferem. A resposta repete target_kg e bar_kg ao lado de per_side_kg, o detalhamento de anilhas e o total, dando um plano de carregamento autocontido.
Casos de integração
Ferramentas de programação e coaching
Processe em lote todos os pesos-alvo de uma sessão pela API para pré-renderizar as instruções de carregamento de cada série.
Perguntas técnicas
Qual é a barra e o conjunto de anilhas padrão?
Uma barra de 20 kg e anilhas de 25, 20, 15, 10, 5, 2.5 e 1.25 kg, a menos que você sobrescreva bar_kg ou o array plates.
E se o alvo não puder ser montado exatamente?
Se sobrar qualquer peso após a passagem gulosa, ela devolve um erro invalid_input, significando que o alvo não é alcançável com aquele conjunto de anilhas.
Os resultados são por lado ou totais?
plates_per_side lista o que vai em uma extremidade da barra; per_side_kg é load/2 e total_kg é bar_kg mais o dobro disso.
É gratuito e quanto custa a API?
O widget do navegador é gratuito (tier A) e roda o núcleo determinístico idêntico; as chamadas de API são cobradas por requisição bem-sucedida a partir de US$ 0,002.