ForHosting KIT · Ferramentas para dev

Codificação Fibonacci (Zeckendorf)

Escreva qualquer inteiro positivo como código de Fibonacci: 6 é 5 + 1, então vira 10011, e todo código termina em 11, para ser reconhecido dentro de uma sequência sem informar o tamanho. A decodificação faz o caminho inverso. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Valor
6
Modo de cálculo
Encode
Você obtém
Entrada
6
Código
10011
Bits
10011
Comprimento
5

A codificação Fibonacci, também chamada codificação de Zeckendorf, escreve cada inteiro positivo como uma soma única de números de Fibonacci não consecutivos e empacota essa soma em uma cadeia de bits autodlimitada que sempre termina com o terminador 11. Estudantes que encontram códigos universais pela primeira vez, instrutores que montam oráculos de prova e engenheiros que comparam códigos Elias gamma, Golomb e Fibonacci precisam do mesmo mapa determinístico nos dois sentidos: inteiro para bits e bits para inteiro, com falha honesta quando a entrada é zero, negativa, não binária ou não é o layout canônico de Zeckendorf.

O que significam a representação de Zeckendorf e a codificação Fibonacci

O teorema de Zeckendorf afirma que todo inteiro positivo tem uma representação única como soma de números de Fibonacci em que nenhum somando é consecutivo na sequência de Fibonacci. A convenção usual de codificação inicia a sequência utilizável em F2 igual a 1, F3 igual a 2, F4 igual a 3, F5 igual a 5, e assim por diante, omitindo de propósito o F1 duplicado igual a 1 para que a unicidade fique inequívoca.

Para codificar n você escolhe de forma gulosa o maior Fibonacci que não ultrapasse o restante, pula o vizinho inferior seguinte e repete até o resto ser zero. O código Fibonacci é então a máscara de bits desses termos de F2 até o maior usado, escrita do índice baixo ao alto, mais um 1 terminador extra.

Como o termo de maior índice sempre contribui com um 1 final de carga útil, todo código válido termina com o padrão de dois bits 11, o que torna o código autodlimitado em um fluxo sem campo de comprimento separado. Valores clássicos fixam o modelo mental: 1 codifica como 11, 2 como 011, 3 como 0011, 4 como 1011, 5 como 00011 e 6 como 10011.

A decodificação inverte o percurso: remove-se o bit terminador final, somam-se F2, F3, … onde os bits de carga são 1 e, opcionalmente, recodifica-se para provar que a cadeia era o layout canônico de Zeckendorf e não uma soma alternativa com Fibonacci consecutivos. Essa unicidade é exatamente por que a codificação Fibonacci é popular no ensino de códigos universais e em projetos que precisam de prefixos inteiros de comprimento variável sem dicionário.

Onde a codificação Fibonacci se paga na prática

Salas de aula e plataformas MOOC usam uma calculadora de codificação Fibonacci para que alunos verifiquem tarefas de Zeckendorf sem percorrer tabelas longas à mão e sem confundir o código com as ferramentas separadas math.fibonacci do n-ésimo termo. Cursos de programação competitiva e teoria da informação precisam de um oráculo bidirecional que produza a palavra-código e rejeite strings ilegais, alinhado a corretores de contest que marcam errado qualquer codificação não canônica ou com termos consecutivos.

Jobs de qualidade de dados podem guardar prefixos inteiros compactos autodlimitados e verificá-los depois decodificando e recodificando. Em todo fluxo trate um código válido apenas como empacotamento inteiro bem formado, não como autenticação nem segredo: a codificação Fibonacci é um código universal transparente, não criptografia. Mantenha valores no intervalo de inteiros seguros deste worker tier-A, fixe as strings de código esperadas nos testes e obtenha encode e decode determinísticos para ensino, correção e ferramentas leves sem montar um stack de álgebra computacional próprio.

Demos e notebooks de códigos universais

Compare comprimentos de código Fibonacci com prefixos Elias ou unários para os mesmos inteiros positivos em notebooks de ensino sem reimplementar o percurso guloso toda vez.

Prefixos inteiros autodlimitados

Codifique IDs positivos pequenos como strings de bits Fibonacci que terminam em 11; depois decodifique e recodifique em pipelines para garantir que os prefixos armazenados permaneçam canônicos.

Como codificar um número com codificação Fibonacci?

Defina mode como encode e value como um inteiro positivo.

Por que os códigos devem terminar em 11?

Códigos Fibonacci acrescentam um 1 terminador após a máscara de bits de Zeckendorf; o termo de maior uso é sempre um 1, então toda palavra-código válida termina em 11 e fica autodlimitada em um fluxo de bits.

Como decodificar um código de Fibonacci?

Tire o último 1, que só marca o fim, e some os números de Fibonacci 1, 2, 3, 5 e seguintes nas posições em que houver um 1. Assim, 10011 dá 1 mais 5, ou seja, 6.

Por que não dá para codificar o zero?

A regra de Zeckendorf só cobre inteiros positivos: o zero não tem uma soma de números de Fibonacci para escrever. Por isso o zero e os negativos são recusados com uma mensagem clara, em vez de gerar um código inventado.

Por que um código com dois bits 1 seguidos antes do fim é recusado?

Dois bits 1 juntos significam dois números de Fibonacci consecutivos, algo que a forma de Zeckendorf nunca usa. Essa sequência não é o código válido do seu número, então a decodificação a recusa em vez de adivinhar.

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/enc/fibonacci-coding

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/enc/fibonacci-coding \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"encode","value":"6"}'
{
  "mode": "encode",
  "value": "6"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.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.

por chamadaUS$ 0,002

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

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.

Esta capacidade implementa o percurso padrão F2=1, F3=2, F4=3 como lógica parse pura compartilhada pela ferramenta gratuita do navegador e pela API do KIT, para que tarefas, plugins LMS e pipelines de produção nunca discordem de uma palavra-código. Chamadas de API bem-sucedidas usam saldo pré-pago no preço base publicado US$ 0,002; entrada inválida não é cobrada.

Contrato de entrada, formato da resposta e erros de validação

Value para decode é uma string de bits com caracteres 0 e 1 que termina em 11; espaços ou sublinhados opcionais são removidos, mas qualquer outro caractere, string vazia, código longo demais, carga com bits 1 consecutivos ou layout que não seja a recodificação canônica do inteiro decodificado é rejeitado. Mode decode e value 10011 produz value 6 com a mesma decomposição. Validação falha não consome saldo pré-pago. Envie JSON via POST com dois campos obrigatórios. Mode deve ser encode ou decode (alias op, action e direction são aceitos). Value para encode é um inteiro positivo como número JSON ou string só de dígitos no intervalo de inteiros seguros do JavaScript até 9007199254740991; zero, negativos, frações, zeros à esquerda em strings de vários dígitos e texto não numérico falham com invalid_input indicando o problema. Em sucesso ambos os modos devolvem mode, a entrada ecoada, value como inteiro, code e bits como a string Fibonacci, length, zeckendorf como somandos do maior ao menor, zeckendorf_sum como string de exibição tipo 5+1, fibonacci_indices como o índice F de cada somando, algorithm igual a fibonacci_coding e representation igual a Zeckendorf. Exemplo: mode encode e value 6 produz code 10011 com zeckendorf 5 mais 1.

Onde a codificação Fibonacci se paga na prática

Esboços de compressão e codecs costumam comparar códigos Fibonacci com Elias gamma e unário para inteiros positivos pequenos; uma API pequena que devolve comprimento e somandos torna experimentos em notebooks e demos reproduzíveis.

Checagens de Zeckendorf em tarefas e provas

Alunos enviam um inteiro ou uma string de bits candidata; a API devolve o código Fibonacci canônico e os somandos, ou invalid_input quando bits 1 consecutivos quebram as regras de Zeckendorf.

Como decodificar um código Fibonacci?

Defina mode como decode e value como uma string de bits 0/1 terminando em 11. A API devolve o inteiro positivo value e a mesma decomposição de Zeckendorf usada na codificação.

Quais entradas são rejeitadas?

Zero, negativos, não inteiros, strings de decode não binárias, códigos sem o terminador 11, cargas com bits 1 consecutivos e layouts não canônicos falham com invalid_input e não são cobrados.

Quanto custa a codificação Fibonacci Zeckendorf?

A ferramenta do navegador é gratuita. Requisições API usam saldo pré-pago do KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não consome saldo.

Ver a documentação completa do KIT →