ForHosting KIT · Ferramentas para dev

O módulo é associativo?

A API de associatividade do módulo responde a uma pergunta enganosamente simples: para três inteiros dados, o agrupamento faz diferença?

● BetaGrátis · no seu navegador
Use pelo WebAPIE-mailTelegramApp em breve

Ela calcula as duas ordenações da operação de resto — (a % b) % c à esquerda e a % (b % c) à direita — e informa se elas coincidem. Você envia três inteiros e recebe de volta os dois lados da comparação junto com um simples true ou false, calculado sobre inteiros de precisão arbitrária, de modo que a resposta é exata para valores de qualquer tamanho realista. Se qualquer posição de divisor for zero — b, c ou o resto intermediário b % c — a requisição é rejeitada com um erro claro, em vez de uma surpresa de divisão por zero. É uma verificação pequena, mas é a que decide se uma expressão de módulo encadeado no seu código significa o que você pensa que significa.

Por que o agrupamento importa na operação de resto

A adição e a multiplicação são associativas: (1 + 2) + 3 é igual a 1 + (2 + 3), sempre, então ninguém pensa nos parênteses. A operação de resto não goza dessa garantia. A expressão a % b % c é ambígua no papel, e a maioria das linguagens de programação a resolve avaliando da esquerda para a direita, produzindo (a % b) % c. Se isso é igual ao agrupamento alternativo a % (b % c) depende inteiramente dos três valores envolvidos. Tome a = 17, b = 5, c = 3: o agrupamento à esquerda produz (17 % 5) % 3 = 2 % 3 = 2, enquanto o agrupamento à direita produz 17 % (5 % 3) = 17 % 2 = 1. Os dois agrupamentos divergem, portanto o módulo não é associativo para esse trio. Mas para a = 8, b = 5, c = 3 ambos os lados resultam em 0, e a operação por acaso é associativa ali. Esta capacidade existe porque essa distinção é fácil de errar em uma revisão de código e tediosa de verificar manualmente em todo um conjunto de parâmetros candidatos: uma única chamada resolve isso de forma determinística, retornando os dois valores intermediários para que você veja exatamente onde os dois agrupamentos divergem, em vez de confiar cegamente em um booleano isolado.

Como a verificação é calculada e a regra do divisor zero

O cálculo é deliberadamente transparente. Primeiro, cada entrada é interpretada como um inteiro — strings decimais ou números JSON são aceitos, e a aritmética de precisão arbitrária é usada internamente, de modo que não há teto de precisão em 2⁵³ nem arredondamento em nenhum ponto do pipeline. Em seguida, o lado esquerdo é avaliado como (a % b) % c e o lado direito como a % (b % c), onde % segue a convenção truncada familiar do JavaScript, C e Java: o resultado assume o sinal do dividendo. Os dois resultados são comparados por igualdade exata, e a resposta é relatada junto com ambos os lados. Há uma situação em que nenhuma resposta booleana existe: divisão por zero. Três posições de divisor aparecem nas duas expressões — b em a % b, c em (a % b) % c e o valor intermediário b % c como divisor no lado direito. Se b ou c for zero, ou se b % c por acaso for zero para os valores dados, a requisição é rejeitada como entrada inválida, com uma mensagem que indica exatamente qual divisor falhou. Esse erro nunca é cobrado, então você pode sondar faixas de parâmetros programaticamente com segurança. São aceitas entradas de até 2048 dígitos decimais por campo.

Onde esta verificação conquista seu lugar

O chamador mais comum é alguém que ensina ou aprende teoria dos números: questões de associatividade aparecem constantemente em livros didáticos e listas de exercícios, e poder verificar uma afirmação sobre centenas de trios em segundos transforma uma tarefa árdua em um experimento. O segundo chamador é um desenvolvedor refatorando lógica de buckets de hash ou de sharding, onde expressões como h % m % n surgem discretamente e mudam de significado conforme a ordem de avaliação — verificar a associatividade sobre os pares de módulos reais em produção diz se uma reescrita é segura. O terceiro é quem constrói uma ferramenta de matemática simbólica ou de simplificação de expressões, que precisa saber quais regras de reescrita são válidas antes de aplicá-las. A calculadora gratuita desta página executa exatamente o mesmo código do endpoint pago, então o que você testa no navegador é o que sua integração receberá. Chamadas automatizadas custam US$ 0,002 por requisição, sem sobretaxa por unidade. Envie um objeto JSON com os campos a, b e c; a resposta ecoa as entradas, relata left e right como strings decimais e dá o veredito final no campo associative — true quando ambos os agrupamentos coincidem, false quando não coincidem.

Verificar uma lista de exercícios de teoria dos números

Confira afirmações de associatividade em dezenas de trios em segundos, em vez de calcular cada agrupamento à mão, e veja os dois lados quando eles divergem.

Auditar expressões de buckets de hash e sharding

Confirme se h % m % n pode ser reagrupado com segurança no código de produção antes de refatorar uma expressão que roteia tráfego.

Alimentar uma regra de simplificação de expressões

Permita que uma ferramenta de matemática simbólica decida se reassociar um módulo encadeado é válido para valores concretos antes de aplicar a reescrita.

Quanto custa?

US$ 0,002 por requisição, sem sobretaxa por unidade. Também é gratuito executar no seu navegador nesta página.

O que exatamente ela compara?

O agrupamento à esquerda (a % b) % c contra o agrupamento à direita a % (b % c). Ela retorna ambos os valores e true quando são iguais.

O que acontece se um divisor for zero?

A requisição é rejeitada como entrada inválida. Isso cobre b = 0, c = 0 e o caso mais sutil em que b % c = 0, o que tornaria o divisor do lado direito zero.

Os inteiros podem ser negativos?

Sim. O resto segue a convenção truncada do JavaScript, C e Java: o resultado assume o sinal do dividendo.

Qual o tamanho máximo dos inteiros?

Até 2048 dígitos decimais por campo, calculados com aritmética de precisão arbitrária, portanto sem arredondamento nem teto de 2⁵³.

A resposta é cacheada ou aleatória?

Não. O cálculo é totalmente determinístico: os mesmos três inteiros sempre produzem os mesmos left, right e veredito.

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.

POSThttps://api.kit.forhosting.com/math/is-modulo-associative

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/math/is-modulo-associative \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"a":"17","b":"5","c":"3"}'
{
  "a": "17",
  "b": "5",
  "c": "3"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.is_modulo_associative",
  "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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_digits2048
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Ver a documentação completa do KIT →