Calculadora de plus-minus de basquete
O plus-minus é o número mais simples e honesto do basquete: pegue os pontos que o time de um jogador marcou enquanto ele estava em quadra, subtraia os pontos que o adversário marcou no mesmo período, e você tem o plus-minus bruto do jogador.
Executar grátis
Um valor positivo significa que o time superou o adversário durante aqueles minutos; um negativo, que foi superado. Esta calculadora de plus-minus de basquete faz exatamente essa aritmética em uma única chamada determinística. Você envia os dois totais de pontos e recebe o diferencial junto com um veredicto claro: positivo, negativo ou empatado. Funciona de graça no seu navegador nesta página e custa US$ 0,002 por requisição via API.
O que o plus-minus realmente mede
A súmula diz o que um jogador fez: pontos, rebotes, assistências. O plus-minus faz outra pergunta: o que aconteceu com o placar enquanto aquele jogador estava em quadra? Se um time marca 58 pontos e sofre 51 durante os vinte e dois minutos de um armador, o plus-minus desse armador é +7, não importa se ele marcou dois pontos ou trinta. A métrica, deliberadamente, credita e debita o jogador por tudo o que acontece nos seus minutos, incluindo as jogadas que nunca chegam à súmula: um bloqueio que libera um companheiro, uma rotação antecipada que mata um contra-ataque, ou simplesmente abrir a quadra para o ataque respirar. Essa amplitude é, ao mesmo tempo, a força e a limitação conhecida da estatística. Um reserva que divide cada turno com um astro herda parte do impacto desse astro, e um titular preso a uma formação ruim absorve um dano que não é dele. Por isso os treinadores leem o plus-minus como ponto de partida para perguntas, não como veredicto final, e esta calculadora segue esse espírito ao devolver o diferencial bruto, sem ajustes ocultos.
Como o cálculo funciona aqui
O endpoint aceita dois campos: os pontos que o time do jogador marcou enquanto ele estava em quadra, e os pontos que o adversário marcou nesse mesmo intervalo. Ambos precisam ser inteiros não negativos, porque um placar de basquete não pode ser negativo e ponto fracionário não existe. O valor retornado é o primeiro número menos o segundo, mais um veredicto curto que classifica o resultado como positivo, negativo ou empatado. As entradas vêm direto de uma súmula ou de um feed de rastreamento: a maioria dos dados de lance a lance já marca cada cesta com os jogadores em quadra, de modo que os totais em quadra de qualquer jogador são um simples filtro e soma. Como a aritmética é fixa e determinística, as mesmas duas entradas produzem sempre a mesma saída, no widget do navegador e na API paga: o resultado gratuito da web é, byte a byte, o mesmo pelo qual a API cobra US$ 0,002. Se um dos valores for negativo ou não for um número inteiro, a requisição é rejeitada com um erro claro de entrada inválida e não é cobrada.
Como ler e usar o número com responsabilidade
O plus-minus de um único jogo é ruidoso. O tempo de lixo de uma goleada, as substituições do adversário e as sequências de arremessos certeiros empurram o número para todos os lados; por isso os analistas o agregam ao longo de muitos jogos antes de tirar conclusões, ou mudam para variantes ajustadas que levam em conta companheiros e adversários. Ainda assim, o diferencial bruto tem usos reais no dia a dia. Um treinador pode comparar como o placar se moveu com diferentes combinações de jogadores durante um jogo apertado. Um olheiro pode verificar se a súmula discreta de um jogador de elenco escondia um forte impacto em quadra. Um pesquisador de transmissão pode obter um número rápido para o bloco de pós-jogo sem abrir uma planilha. E um desenvolvedor que constrói um painel de estatísticas pode chamar este endpoint como uma peça pequena e testável, em vez de reimplementar a validação a cada vez. O hábito importante é acompanhar o diferencial com contexto: os minutos jogados, o ritmo do jogo e a qualidade das formações envolvidas. Esta ferramenta entrega o número de forma limpa e rápida; a interpretação fica onde deve ficar, com o humano que a lê.
Casos de uso
Revisão de formações após o jogo
A comissão técnica insere os pontos a favor e contra de cada jogador a partir do registro lance a lance e obtém o plus-minus de todos em segundos.
Widget para painel de estatísticas
Um desenvolvedor adiciona uma coluna de plus-minus ao painel analítico do time chamando o endpoint por jogador, reutilizando a validação em vez de escrever a própria.
Pesquisa para transmissões
Um pesquisador de TV calcula um diferencial rápido para o bloco do intervalo sem brigar com uma planilha no meio de uma transmissão ao vivo.
Perguntas frequentes
Quanto custa?
US$ 0,002 por requisição via API. Também é grátis executar no seu navegador nesta página, com resultados idênticos.
De quais dados ele precisa?
De dois números: os pontos que o seu time marcou enquanto o jogador estava em quadra, e os que o adversário marcou no mesmo período. Ambos devem ser inteiros não negativos.
O que acontece se eu enviar um valor negativo?
A requisição é rejeitada com um erro de entrada inválida indicando qual campo está errado. Requisições rejeitadas não são cobradas.
É o mesmo que plus-minus ajustado?
Não. Este é o plus-minus bruto: pontos do time menos pontos do adversário durante os minutos do jogador. As variantes ajustadas, que descontam companheiros e adversários, são um cálculo separado e bem mais pesado.
Posso enviar os valores como texto?
Sim. Cadeias de números inteiros como "58" são aceitas e interpretadas. Decimais, valores negativos e texto não numérico são rejeitados.
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/sports/plus-minus-calculate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"team_points":58,"opponent_points":51}'const res = await fetch("https://api.kit.forhosting.com/sports/plus-minus-calculate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"team_points": 58,
"opponent_points": 51
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/sports/plus-minus-calculate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"team_points": 58,
"opponent_points": 51
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/sports/plus-minus-calculate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"team_points":58,"opponent_points":51}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"team_points":58,"opponent_points":51}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/sports/plus-minus-calculate", 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
{
"team_points": 58,
"opponent_points": 51
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "sports.plus_minus_calculate",
"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. |