Liste todas as composições ordenadas de um inteiro
O número 4 tem 8 composições, de 1+1+1+1 até o próprio 4, e esta ferramenta lista todas elas em uma ordem fixa, com o total ao lado. Aceita qualquer n de 1 a 16. 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
- N
- 4
- Quantidade
- 8
Uma composição ordenada de um inteiro positivo n é uma forma de escrever n como soma de inteiros positivos na qual a ordem das parcelas importa: 1+2 e 2+1 são composições diferentes de 3, e existem sempre exatamente 2 elevado a n menos um composições no total.
O que são composições ordenadas e como diferem de partições
Em teoria dos números e combinatória, uma composição de n é uma sequência ordenada de inteiros positivos cuja soma é n. Ao contrário das partições de inteiros, nas quais só importa o multiconjunto de parcelas e 1+2 é identificado com 2+1, as composições tratam cada ordenação como um objeto distinto. Para todo n de pelo menos um existem exatamente dois elevado a n menos um composições: cada composição corresponde a colocar ou omitir um separador entre unidades consecutivas em uma fila de n uns.
Os livros usam composições quando a ordem codifica sequência, classificação ou alocação em etapas—por exemplo tamanhos sucessivos de bloco em um cronograma, comprimentos de corrida em uma cadeia binária, ou tamanhos de passo ao longo de um caminho que deve cobrir exatamente n unidades. Os estudantes costumam confundir as duas famílias porque ambas respondem “como n pode ser escrito como soma”, mas só as composições se importam com a ordem da esquerda para a direita.
Devolver a lista ordenada completa torna essa distinção concreta: você vê cada rearranjo, e não um representante canônico ordenado, e o campo de contagem deve bater com a fórmula fechada, de modo que você identifica de imediato uma enumeração manual incompleta.
Como a capacidade enumera composições e quando ela recusa
O motor constrói cada composição por expansão recursiva da primeira parcela: para a soma restante r ele tenta cada tamanho de parcela k de um até r, acrescenta k ao prefixo em crescimento e continua até que o resto seja zero, ponto em que a sequência completa é registrada. Esse percurso produz uma ordem estável e determinística—requisições idênticas sempre geram o mesmo vetor de vetores—sem depender de relógio, aleatoriedade ou estado de rede.
A resposta reporta o próprio n, o vetor de composições e a contagem igual ao comprimento desse vetor (que é sempre dois elevado a n menos um para um n válido). Campos n ausentes, não inteiros ou malformados são recusados da mesma forma e nunca são cobrados.
Onde usar a lista e quanto custa
Aplicações típicas incluem verificar respostas de estudantes que listam composições de um dado n, gerar casos de teste exaustivos para funções que aceitam sequências ordenadas de parcelas, explorar identidades combinatórias que contam composições com tamanhos de parcela restritos ao pós-filtrar a lista completa, e documentar opções de encadeamento quando um orçamento de n unidades pode ser dividido em fases ordenadas.
Mantenha n dentro dos limites documentados para que a resposta continue gerenciável; se você só precisa da contagem, ainda pode usar esta ferramenta para n pequeno ou aplicar a fórmula fechada dois elevado a n menos um fora da ferramenta para trabalhos teóricos maiores. O caminho do navegador roda localmente e não exige conta. Trate a contagem devolvida como autoritativa para os vetores listados, em vez de recalcular o comprimento em código cliente que possa divergir deste contrato.
Casos de uso
Verificação de tarefas e olimpíadas
Compare a lista ordenada de composições de um estudante para um dado n com a enumeração canônica completa e a contagem, em vez de corrigir árvores manuais parciais.
Exploração de combinatória e demos de ensino
Mostre ao vivo como a ordem distingue composições de partições, e confirme que a contagem devolvida sempre é igual a dois elevado a n menos um.
Perguntas frequentes
Como listo todas as composições ordenadas de um inteiro?
A resposta inclui as composições como vetores de parcelas, além da contagem.
Qual é a diferença entre uma composição e uma partição?
As composições tratam a ordem como significativa (1+2 difere de 2+1). As partições ignoram a ordem e mantêm apenas o multiconjunto de parcelas.
Quantas composições o 4 tem?
São 8: 1+1+1+1, 1+1+2, 1+2+1, 1+3, 2+1+1, 2+2, 3+1 e 4. Isso confere com 2^(n-1), então, se a sua lista feita à mão tiver menos, falta alguma.
Por que n só vai até 16?
A lista dobra a cada vez que n aumenta em um, então valores grandes gerariam uma resposta enorme. Até 16 a lista completa continua fácil de ler e conferir; se você só precisa da quantidade, a fórmula 2^(n-1) basta.
A lista sai sempre na mesma ordem?
Sim. O mesmo n sempre devolve a mesma lista na mesma ordem, montada testando cada primeira parte da menor para a maior, para que você compare respostas linha por linha.
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/numth/compositions-list \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":4}'const res = await fetch("https://api.kit.forhosting.com/numth/compositions-list", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/compositions-list",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/compositions-list", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/compositions-list", 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
{
"n": 4
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.compositions_list",
"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 a capacidade enumera composições e quando ela recusa
Você envia um corpo JSON com um único campo obrigatório n, um inteiro positivo de pelo menos um e no máximo dezesseis. Valores abaixo de um falham com invalid_input, porque zero e negativos não são inteiros positivos na definição usual de composição. Valores acima do teto publicado também falham com invalid_input: o tamanho da lista dobra a cada incremento de n, então uma enumeração sem limite explodiria o tamanho da resposta e o CPU do Worker; o máximo documentado mantém a listagem completa prática tanto para o navegador quanto para a API.
Onde usar a lista e quanto custa
Use a ferramenta gratuita do navegador quando quiser uma conferência visual rápida para um n pequeno, ou chame a API quando um script, um diário de notas, um gerador ou um caderno de pesquisa precisar resolver muitos valores da mesma forma todas as vezes. O uso da API é debitado do saldo pré-pago do KIT ao preço-base publicado de US$ 0,002 por requisição bem-sucedida; uma validação que falha não consome saldo.
Casos de integração
Geração exaustiva de fixtures de teste
Alimente valores pequenos de n na API e use cada composição como um caso de entrada para funções que processam sequências ordenadas de inteiros positivos que somam um orçamento.
Perguntas técnicas
Por que a ferramenta recusa n grande?
O número de composições é 2^(n-1). Acima do máximo publicado a lista completa é grande demais para enumerar com segurança em uma única requisição, então a chamada falha com invalid_input.
A lista de composições de inteiros é grátis?
O widget do navegador é grátis e roda localmente. As chamadas à API usam o saldo pré-pago do KIT ao preço-base publicado de US$ 0,002; entrada inválida não é cobrada.
O resultado é sempre o mesmo para o mesmo n?
Sim. O algoritmo é enumeração recursiva pura, sem aleatoriedade nem carimbos de tempo, então entradas idênticas produzem JSON idêntico.