ForHosting KIT · Utilidades de desarrollo

Codificación Fibonacci (Zeckendorf)

Escriba cualquier entero positivo como código de Fibonacci: 6 es 5 + 1, así que se convierte en 10011, y todo código termina en 11, de modo que se reconoce dentro de una secuencia sin indicar su longitud. La descodificación hace el camino inverso. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Valor
6
Modo de cálculo
Encode
Obtiene
Entrada
6
Código
10011
Bits
10011
Longitud
5

La codificación Fibonacci, también llamada codificación de Zeckendorf, escribe cada entero positivo como una suma única de números de Fibonacci no consecutivos y empaqueta esa suma en una cadena de bits autodelimitada que siempre termina con el terminador 11. Estudiantes que descubren los códigos universales, docentes que construyen oráculos de examen e ingenieros que comparan códigos Elias gamma, Golomb y Fibonacci necesitan el mismo mapa determinista en ambos sentidos: de entero a bits y de bits a entero, con fallo honesto cuando la entrada es cero, negativa, no binaria o no es el layout canónico de Zeckendorf.

Qué significan la representación de Zeckendorf y la codificación Fibonacci

El teorema de Zeckendorf afirma que todo entero positivo admite una representación única como suma de números de Fibonacci en la que ningún sumando es consecutivo en la secuencia. La convención habitual de codificación empieza la secuencia usable en F2 igual a 1, F3 igual a 2, F4 igual a 3, F5 igual a 5, y así sucesivamente, omitiendo a propósito el F1 duplicado igual a 1 para que la unicidad sea inequívoca.

Para codificar n se elige de forma codiciosa el mayor Fibonacci que no supere el resto, se salta el vecino inferior siguiente y se repite hasta que el resto sea cero. El código Fibonacci es entonces la máscara de bits de esos términos desde F2 hasta el mayor usado, escrita de índice bajo a alto, más un 1 terminador extra.

Como el término mayor siempre aporta un 1 final de carga útil, todo código válido termina con el patrón de dos bits 11, lo que hace al código autodelimitado en un flujo sin campo de longitud aparte. Valores clásicos fijan el modelo mental: 1 se codifica como 11, 2 como 011, 3 como 0011, 4 como 1011, 5 como 00011 y 6 como 10011.

La decodificación invierte el recorrido: se quita el bit terminador final, se suman F2, F3, … donde los bits de carga son 1 y, opcionalmente, se vuelve a codificar para demostrar que la cadena era el layout canónico de Zeckendorf y no una suma alternativa con Fibonacci consecutivos. Esa unicidad es precisamente por qué la codificación Fibonacci es popular al enseñar códigos universales y en diseños que necesitan prefijos enteros de longitud variable sin diccionario.

Dónde la codificación Fibonacci aporta valor en la práctica

Aulas y plataformas MOOC usan una calculadora de codificación Fibonacci para que el alumnado verifique deberes de Zeckendorf sin recorrer a mano tablas largas y sin confundir el código con las herramientas aparte de math.fibonacci del término n-ésimo. Cursos de programación competitiva y teoría de la información necesitan un oráculo bidireccional que produzca la palabra de código y rechace cadenas ilegales, alineado con correctores de concurso que marcan mal cualquier codificación no canónica o con términos consecutivos.

Trabajos de calidad de datos pueden guardar prefijos enteros compactos autodelimitados y verificarlos luego decodificando y recodificando. En todo flujo trate un código válido solo como empaquetado entero bien formado, no como autenticación ni secreto: la codificación Fibonacci es un código universal transparente, no cifrado. Mantenga valores en el rango de enteros seguros de este worker tier-A, fije las cadenas de código esperadas en las pruebas y obtendrá encode y decode deterministas para docencia, evaluación y herramientas ligeras sin montar un stack de álgebra computacional propio.

Demos y cuadernos de códigos universales

Compare longitudes de código Fibonacci con prefijos Elias o unarios para los mismos enteros positivos en cuadernos docentes sin reimplementar el recorrido codicioso cada vez.

Prefijos enteros autodelimitados

Codifique identificadores positivos pequeños como cadenas de bits Fibonacci que terminan en 11; luego decodifique y recodifique en pipelines para asegurar que los prefijos almacenados sigan siendo canónicos.

¿Cómo se codifica un número con codificación Fibonacci?

Ponga mode en encode y value en un entero positivo.

¿Por qué los códigos deben terminar en 11?

Los códigos Fibonacci añaden un 1 terminador tras la máscara de bits de Zeckendorf; el término mayor usado es siempre un 1, así que toda palabra de código válida termina en 11 y queda autodelimitada en un flujo de bits.

¿Cómo se descodifica un código de Fibonacci?

Quite el último 1, que solo marca el final, y sume los números de Fibonacci 1, 2, 3, 5 y siguientes en las posiciones donde haya un 1. Así 10011 da 1 más 5, es decir, 6.

¿Por qué no se puede codificar el cero?

La regla de Zeckendorf solo abarca enteros positivos: el cero no tiene una suma de números de Fibonacci que escribir. Por eso el cero y los negativos se rechazan con un mensaje claro en lugar de dar un código inventado.

¿Por qué se rechaza un código con dos bits 1 seguidos antes del final?

Dos bits 1 juntos equivalen a dos números de Fibonacci consecutivos, algo que la forma de Zeckendorf nunca usa. Esa cadena no es el código válido de su número, así que la descodificación la rechaza en vez de adivinar.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/enc/fibonacci-coding

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

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"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Esta capacidad implementa el recorrido estándar F2=1, F3=2, F4=3 como lógica parse pura compartida por la herramienta gratuita del navegador y la API de KIT, de modo que deberes, plugins LMS y pipelines de producción no discrepen en una palabra de código. Las llamadas API correctas consumen saldo prepago al precio base publicado $0.002; la entrada inválida no se factura.

Contrato de entrada, forma de la respuesta y errores de validación

Value para decode es una cadena de bits con caracteres 0 y 1 que termina en 11; se eliminan espacios o guiones bajos opcionales, pero cualquier otro carácter, una cadena vacía, un código demasiado largo, una carga con bits 1 consecutivos o un layout que no sea la recodificación canónica del entero decodificado se rechaza. Mode decode y value 10011 produce value 6 con la misma descomposición. Envíe JSON por POST con dos campos obligatorios. Mode debe ser encode o decode (se aceptan los alias op, action y direction). Value para encode es un entero positivo como número JSON o cadena solo de dígitos dentro del rango de enteros seguros de JavaScript hasta 9007199254740991; cero, negativos, fracciones, ceros a la izquierda en cadenas de varios dígitos y texto no numérico fallan con invalid_input indicando el problema. En éxito ambos modos devuelven mode, la entrada eco, value como entero, code y bits como la cadena Fibonacci, length, zeckendorf como sumandos de mayor a menor, zeckendorf_sum como cadena de visualización tipo 5+1, fibonacci_indices como el índice F de cada sumando, algorithm igual a fibonacci_coding y representation igual a Zeckendorf. Ejemplo: mode encode y value 6 produce code 10011 con zeckendorf 5 más 1. La validación fallida no consume saldo prepago.

Dónde la codificación Fibonacci aporta valor en la práctica

Bocetos de compresión y códecs suelen comparar códigos Fibonacci con Elias gamma y unario para enteros positivos pequeños; una API diminuta que devuelve longitud y sumandos hace reproducibles los experimentos en cuadernos y demos.

Comprobaciones de Zeckendorf en deberes y exámenes

El alumnado envía un entero o una cadena de bits candidata; la API devuelve el código Fibonacci canónico y los sumandos, o invalid_input si bits 1 consecutivos rompen las reglas de Zeckendorf.

¿Cómo se decodifica un código Fibonacci?

Ponga mode en decode y value en una cadena de bits 0/1 que termine en 11. La API devuelve el entero positivo value y la misma descomposición de Zeckendorf usada al codificar.

¿Qué entradas se rechazan?

Cero, negativos, no enteros, cadenas de decodificación no binarias, códigos sin el terminador 11, cargas con bits 1 consecutivos y layouts no canónicos fallan con invalid_input y no se facturan.

¿Cuánto cuesta la codificación Fibonacci Zeckendorf?

La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago de KIT a $0.002 por llamada correcta; la entrada inválida no consume saldo.

Ver la documentación completa del KIT →