Código Fibonacci
Transforme qualquer inteiro positivo no seu código Fibonacci: 6 vira 10011, formado pelas parcelas 1 e 5. Todo código termina em 11, então vários códigos seguidos se separam sem indicar tamanhos: útil em exercícios de compressão e no projeto de protocolos. 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
- 6
- Código de Fibonacci
- 10011
- Comprimento em bits
- 5
- Termos de Zeckendorf
- 1, 5
A codificação Fibonacci é um código binário universal que associa a cada inteiro positivo uma string de bits única que sempre termina em dois uns consecutivos. A construção usa o teorema de Zeckendorf: todo inteiro positivo é a soma de números de Fibonacci não consecutivos da sequência que começa em um, dois, três, cinco, oito, e assim por diante. Coloque um um para cada parcela, um zero para cada termo da base omitido a partir de F dois, e acrescente um bit terminador final para o código terminar em onze. Estudantes de teoria da informação, tarefas de compressão e projetistas de protocolos que precisam de codificação auto-delimitada de inteiros usam este conversor para conferir exemplos sem montar a tabela de Fibonacci à mão.
O que é a codificação Fibonacci e por que termina em 11
A codificação Fibonacci pertence à família de códigos universais para inteiros positivos: todo n maior ou igual a um recebe uma palavra binária, e nenhuma palavra-código é prefixo de outra, de modo que um fluxo de códigos pode ser analisado sem prefixos de comprimento. O fato matemático central é o teorema de Zeckendorf.
Usando a sequência de Fibonacci escrita como F dois igual a um, F três igual a dois, F quatro igual a três, F cinco igual a cinco, e assim por diante (a sequência usual sem a primeira duplicação do um), todo inteiro positivo tem uma representação única como soma de termos não consecutivos dessa sequência. A codificação coloca um bit sob cada valor da base de F dois até a maior parcela que aparece: o bit é um quando aquele número de Fibonacci é usado e zero caso contrário.
Como Zeckendorf proíbe dois uns consecutivos nos bits da base, o bit mais alto usado é sempre um e nunca é seguido de outro um dentro da base. Acrescentar um único um terminador produz, portanto, um final distintivo de dois uns consecutivos. Esse padrão é o sinal de parada do decodificador: leia bits até ver onze, remova o um final e recupere a soma de Zeckendorf.
Valores clássicos pequenos tornam o padrão concreto. Um codifica-se como onze, dois como zero um um, três como zero zero um um, quatro como um zero um um, cinco como zero zero zero um um e seis como um zero zero um um. Um n maior apenas estende a tabela de Fibonacci até o maior Fk no máximo n, executa a seleção gulosa de cima e emite a mesma string terminada.
O comprimento do código cresce como O do logaritmo na base phi de n, de modo que mesmo inteiros seguros grandes permanecem strings de bits curtas adequadas a demos, vetores de teste e slides sobre códigos de inteiros livres de prefixo.
Onde a codificação Fibonacci é útil
Cursos de teoria da informação e compressão usam a codificação Fibonacci como código universal concreto ao lado de Elias gamma e delta; um conversor ao vivo permite que os estudantes confiram codificações de tarefa para inteiros positivos arbitrários sem montar uma planilha de Fibonacci a cada vez. Programação competitiva e blogs de algoritmos que discutem representações de Zeckendorf, sistemas de numeração Fibonacci ou fluxos auto-delimitados precisam de um oráculo determinístico que devolva a string de bits e as parcelas para testes unitários.
Projetistas de protocolos que avaliam codificações de inteiros de comprimento variável podem comparar comprimentos do código Fibonacci com esquemas de largura fixa e no estilo LEB128 em sequências de ID de amostra antes de fixar um formato de fio. Validação falha não consome saldo.
Casos de uso
Conferência de tarefas de teoria da informação
Os estudantes codificam à mão inteiros positivos com tabelas de Zeckendorf e verificam o código Fibonacci binário (sempre terminado em 11) perante um oráculo determinístico.
Demos de compressão e códigos universais
Materiais de aula comparam o comprimento da codificação Fibonacci com códigos de Elias em inteiros de amostra e mostram o padrão terminador que torna o fluxo livre de prefixo.
Perguntas frequentes
Como converto um número para código Fibonacci?
Envie um inteiro positivo n (n ≥ 1).
Por que todo código Fibonacci termina em 11?
Os bits de Zeckendorf nunca terminam em dois uns consecutivos; um terminador 1 é acrescentado após o bit de base mais alto (sempre 1), produzindo o padrão de parada 11 distintivo para decodificação única.
O que acontece se n for zero ou negativo?
A codificação Fibonacci só está definida para inteiros positivos (n ≥ 1), e solicitações inválidas não são cobradas.
Qual sequência de Fibonacci o codificador usa?
A seleção gulosa produz a expansão de Zeckendorf única sem termos consecutivos.
Qual é o código Fibonacci de 12?
12 é codificado como 101011. As parcelas de Zeckendorf são 1, 3 e 8, que somam 12, e o 1 final acrescentado forma o 11 de fechamento que marca onde o código termina.
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/fibonacci-coding \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":6}'const res = await fetch("https://api.kit.forhosting.com/numth/fibonacci-coding", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/fibonacci-coding",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/fibonacci-coding", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/fibonacci-coding", 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": 6
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.fibonacci_coding",
"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
O mesmo algoritmo puro alimenta a ferramenta gratuita do navegador e o caminho de API pago, de modo que um exemplo áureo de sala de aula coincide byte a byte com a automação de produção, sem modelo e sem rede dentro do solucionador.
Contrato de entrada, campos de resposta e erros
Exemplo: n igual a um produz o código mínimo onze com um único termo de Zeckendorf igual a um. Exemplo: n igual a doze produz um zero um zero um um com parcelas um, três e oito. Clientes que só precisam da string de bits podem ignorar os campos didáticos; corretores e notebooks podem afirmar o código e as parcelas para capturar erros de deslocamento na tabela manual do aluno. Envie por POST um corpo JSON com um único campo obrigatório n: um inteiro positivo maior ou igual a um. O valor pode chegar como número JSON dentro do intervalo de inteiros seguros ou como string de dígitos que se normaliza ao mesmo intervalo. n ausente, strings vazias, não inteiros, valores não finitos, zero e qualquer número negativo falham com invalid_input e não são cobrados. Em caso de sucesso a resposta ecoa n, devolve fibonacci_code como a string binária que sempre termina em onze, informa bit_length como o comprimento em caracteres dessa string, lista zeckendorf_terms como as parcelas de Fibonacci em ordem crescente que somam de novo n, e inclui uma fórmula curta que reafirma a construção para exibição ao lado da resposta. Exemplo: n igual a seis produz fibonacci_code um zero zero um um, bit_length cinco e zeckendorf_terms um e cinco, porque cinco mais um é seis e os bits da base de F dois a F cinco são um, zero, zero, um antes do terminador. A implementação é parse pura de nível A: sem rede de saída, sem aleatoriedade e sem dependência do relógio, de modo que o mesmo n sempre produz o mesmo payload e é seguro fixá-lo em testes áureos automatizados.
Onde uma API de codificação Fibonacci agrega valor
Como cada chamada bem-sucedida é um item faturável a US$ 0,002 com custo analítico bem abaixo desse piso, a capacidade permanece barata para scripts de correção em lote e workers na borda.
Casos de integração
Vetores de teste para ferramentas Zeckendorf
Scripts que implementam numeração Fibonacci ou IDs auto-delimitados podem fixar fibonacci_code e zeckendorf_terms para muitos n sem embutir uma segunda implementação.
Perguntas técnicas
Quanto custa o conversor de código Fibonacci?
A ferramenta do navegador é gratuita. Solicitações API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.