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
Ejecutar — gratis
Ejemplo resuelto
- Valor
- 6
- Modo de cálculo
- Encode
- 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.
Qué puede hacer con ella
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.
Preguntas frecuentes
¿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.
Herramientas relacionadas
Para desarrolladores — acceso por API
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.
Endpoint de API
¿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.
Llámela desde su stack
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"}'const res = await fetch("https://api.kit.forhosting.com/enc/fibonacci-coding", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "encode",
"value": "6"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/fibonacci-coding",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "encode",
"value": "6"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/fibonacci-coding", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"encode","value":"6"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"encode","value":"6"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/fibonacci-coding", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"mode": "encode",
"value": "6"
}Ejemplo de respuesta
{
"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.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
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.
Casos de integración
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.
Preguntas técnicas
¿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.