Codage de Fibonacci (Zeckendorf)
Écrivez n'importe quel entier positif en code de Fibonacci : 6 vaut 5 + 1, il devient donc 10011, et chaque code se termine par 11, ce qui permet de le repérer dans un flux sans indiquer sa longueur. Le décodage fait le chemin inverse. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Valeur
- 6
- Mode de calcul
- Encode
- Entrée
- 6
- Code
- 10011
- Bits
- 10011
- Longueur
- 5
Le codage de Fibonacci, aussi appelé codage de Zeckendorf, écrit chaque entier positif comme une somme unique de nombres de Fibonacci non consécutifs et emballe cette somme dans une chaîne de bits autodélimitée qui se termine toujours par le terminateur 11. Les étudiants qui découvrent les codes universels, les enseignants qui construisent des oracles d'examen et les ingénieurs qui comparent les codes Elias gamma, Golomb et Fibonacci ont besoin de la même carte déterministe dans les deux sens : entier vers bits et bits vers entier, avec un échec honnête lorsque l'entrée est nulle, négative, non binaire ou n'est pas la disposition canonique de Zeckendorf.
Ce que signifient la représentation de Zeckendorf et le codage de Fibonacci
Le théorème de Zeckendorf affirme que tout entier positif admet une représentation unique comme somme de nombres de Fibonacci où aucun deux termes ne sont consécutifs dans la suite. La convention de codage usuelle commence la suite utilisable à F2 égal à 1, F3 égal à 2, F4 égal à 3, F5 égal à 5, et ainsi de suite, en omettant volontairement le doublon F1 égal à 1 pour que l'unicité soit sans ambiguïté.
Pour encoder n, vous choisissez de façon gloutonne le plus grand Fibonacci ne dépassant pas le reste, sautez le voisin inférieur suivant, et répétez jusqu'à ce que le reste soit zéro. Les petites valeurs classiques fixent le modèle mental : 1 s'encode en 11, 2 en 011, 3 en 0011, 4 en 1011, 5 en 00011 et 6 en 10011.
Le décodage inverse le parcours : on retire le bit terminateur final, on somme F2, F3, … là où les bits de charge sont 1, et on peut réencoder pour prouver que la chaîne était la disposition canonique de Zeckendorf plutôt qu'une somme alternative utilisant des Fibonacci consécutifs. Cette unicité explique pourquoi le codage de Fibonacci est populaire pour enseigner les codes universels et dans les conceptions qui ont besoin de préfixes entiers de longueur variable sans dictionnaire.
Où le codage de Fibonacci apporte de la valeur en pratique
Les salles de classe et plateformes MOOC utilisent un calculateur de codage de Fibonacci pour que les apprenants vérifient les devoirs de Zeckendorf sans parcourir à la main de longues tables et sans confondre le code avec les outils séparés math.fibonacci du n-ième terme. Les cours de programmation compétitive et de théorie de l'information ont besoin d'un oracle bidirectionnel qui produit le mot de code et rejette les chaînes illégales, aligné sur les correcteurs de concours qui marquent faux tout encodage non canonique ou à termes consécutifs.
Les tâches de qualité des données peuvent stocker des préfixes entiers compacts autodélimites et les vérifier ensuite en décodant et réencodant. Dans chaque flux, traitez un code valide uniquement comme emballage d'entier bien formé, non comme authentification ni secret : le codage de Fibonacci est un code universel transparent, pas du chiffrement.
Gardez les valeurs dans la plage d'entiers sûrs de ce worker tier-A, figez les chaînes de code attendues dans les tests, et vous obtenez un encode et un decode déterministes pour l'enseignement, la notation et des outils légers sans monter votre propre pile d'algèbre informatique.
Cas d’usage
Démos et carnets de codes universels
Comparez les longueurs de code de Fibonacci avec des préfixes Elias ou unaires pour les mêmes entiers positifs dans des carnets pédagogiques sans réimplémenter le parcours glouton à chaque fois.
Préfixes entiers autodélimites
Encodez de petits identifiants positifs en chaînes de bits Fibonacci finissant par 11, puis décodez et réencodez dans les pipelines pour garantir que les préfixes stockés restent canoniques.
Questions fréquentes
Comment encoder un nombre avec le codage de Fibonacci ?
Mettez mode à encode et value à un entier positif.
Comment décoder un code de Fibonacci ?
Retirez le dernier 1, qui marque seulement la fin, puis additionnez les nombres de Fibonacci 1, 2, 3, 5 et suivants aux positions où figure un 1. Ainsi 10011 donne 1 plus 5, soit 6.
Pourquoi les codes de Fibonacci se terminent-ils par 11 ?
Le plus grand terme utilisé apporte toujours un 1, auquel s'ajoute un 1 de fin. Comme deux 1 consécutifs n'apparaissent nulle part ailleurs, ce motif signale la fin du code dans un flux, sans champ de longueur séparé.
Pourquoi ne peut-on pas encoder zéro ?
La règle de Zeckendorf ne couvre que les entiers positifs : zéro n'a aucune somme de nombres de Fibonacci à écrire. Zéro et les nombres négatifs sont donc refusés avec un message clair plutôt que de produire un code inventé.
Pourquoi un code avec deux bits 1 consécutifs avant la fin est-il refusé ?
Deux bits 1 côte à côte correspondent à deux nombres de Fibonacci consécutifs, ce que la forme de Zeckendorf n'utilise jamais. Cette chaîne n'est pas le code valide de son nombre, le décodage la refuse donc au lieu de deviner.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"mode": "encode",
"value": "6"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.fibonacci_coding",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Cette capacité implémente le parcours standard F2=1, F3=2, F4=3 comme logique parse pure partagée par l'outil gratuit du navigateur et l'API KIT, afin que devoirs, plugins LMS et pipelines de production ne divergent jamais sur un mot de code. Les appels API réussis utilisent le solde prépayé au prix de base publié $0.002 ; une entrée invalide n'est pas facturée.
Ce que signifient la représentation de Zeckendorf et le codage de Fibonacci
Le code de Fibonacci est alors le masque de bits de ces termes de F2 jusqu'au plus grand utilisé, écrit de l'indice bas vers le haut, plus un 1 terminateur supplémentaire. Comme le terme le plus élevé contribue toujours un 1 final de charge utile, tout code valide se termine par le motif de deux bits 11, ce qui rend le code autodélimite dans un flux sans champ de longueur séparé.
Contrat d'entrée, forme de la réponse et erreurs de validation
Mode decode et value 10011 produit value 6 avec la même décomposition. Une validation échouée ne consomme pas le solde prépayé. Envoyez du JSON en POST avec deux champs obligatoires. Mode doit être encode ou decode (les alias op, action et direction sont acceptés). Value pour encode est un entier positif sous forme de nombre JSON ou de chaîne de chiffres purs dans la plage d'entiers sûrs de JavaScript jusqu'à 9007199254740991 ; zéro, négatifs, fractions, zéros de tête sur les chaînes multi-chiffres et texte non numérique échouent avec invalid_input en nommant le problème. Value pour decode est une chaîne de bits de caractères 0 et 1 se terminant par 11 ; les espaces ou tirets bas optionnels sont retirés, mais tout autre caractère, une chaîne vide, un code trop long, une charge avec des bits 1 consécutifs, ou une disposition qui n'est pas le réencodage canonique de l'entier décodé est rejetée. En cas de succès les deux modes renvoient mode, l'entrée en écho, value comme entier, code et bits comme la chaîne Fibonacci, length, zeckendorf comme les termes de haut en bas, zeckendorf_sum comme chaîne d'affichage du type 5+1, fibonacci_indices comme l'indice F de chaque terme, algorithm égal à fibonacci_coding et representation égal à Zeckendorf. Exemple : mode encode et value 6 produit code 10011 avec zeckendorf 5 plus 1.
Où le codage de Fibonacci apporte de la valeur en pratique
Les ébauches de compression et de codecs comparent souvent les codes de Fibonacci à Elias gamma et unaire pour de petits entiers positifs ; une petite API qui renvoie longueur et termes rend reproductibles les expériences en carnets et démos.
Cas d'intégration
Vérifications Zeckendorf pour devoirs et examens
Les étudiants envoient un entier ou une chaîne de bits candidate ; l'API renvoie le code de Fibonacci canonique et les termes, ou invalid_input lorsque des bits 1 consécutifs violent les règles de Zeckendorf.
Questions techniques
Comment décoder un code de Fibonacci ?
Mettez mode à decode et value à une chaîne de bits 0/1 finissant par 11. L'API renvoie l'entier positif value et la même décomposition de Zeckendorf que pour l'encodage.
Pourquoi les codes doivent-ils finir par 11 ?
Les codes de Fibonacci ajoutent un 1 terminateur après le masque de bits de Zeckendorf ; le terme le plus élevé est toujours un 1, donc tout mot de code valide se termine par 11 et est autodélimite dans un flux de bits.
Quelles entrées sont rejetées ?
Zéro, négatifs, non-entiers, chaînes de décodage non binaires, codes sans le terminateur 11, charges avec bits 1 consécutifs et dispositions non canoniques échouent avec invalid_input et ne sont pas facturés.
Quel est le coût du codage Fibonacci Zeckendorf ?
L'outil navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide ne consomme pas le solde.