A propos des représentations de Zeckendorf / Numéros de base de Fibonacci
Il s'agit d'un système numérique qui utilise les nombres de Fibonacci comme base. Les nombres se composent de 0 et de 1 et chaque 1 signifie que le nombre contient le numéro de Fibonacci correspondant, et 0 signifie qu'il n'en contient pas.
Par exemple, convertissons tous les nombres naturels <= 10 en Fibonacci de base.
1 deviendra 1, car c'est la somme de 1, qui est un nombre de Fibonacci,
2 deviendra 10, car c'est la somme de 2, qui est un nombre de Fibonacci, et il n'a pas besoin de 1, car nous avons déjà atteint la somme souhaitée.
3 deviendra 100, car c'est la somme de 3, qui est un nombre de Fibonacci et il n'a pas besoin de 2 ou 1 car nous avons déjà atteint la somme souhaitée.
- 4 deviendra 101, car il s'agit de la somme de [3,1], tous deux des nombres de Fibonacci.
- 5 deviendra 1000, car c'est la somme de 5, qui est un nombre de Fibonacci, et nous n'avons besoin d'aucun des autres nombres.
- 6 deviendra 1001, car c'est la somme des nombres de Fibonacci 5 et 1.
- 7 deviendra 1010, car c'est la somme des nombres de Fibonacci 5 et 2.
- 8 deviendra 10000, car il s'agit d'un nombre de Fibonacci.
- 9 deviendra 10001, car il s'agit de la somme des nombres de Fibonacci 8 et 1.
- 10 deviendra 10010, car c'est la somme des nombres de Fibonacci 8 et 2.
Convertissons un nombre aléatoire de Fibonacci de base, 10101001010 en décimal: nous écrivons d'abord les nombres de Fibonacci correspondants. Ensuite, nous calculons la somme des nombres sous 1.
1 0 1 0 1 0 0 1 0 1 0
144 89 55 34 21 13 8 5 3 2 1 -> 144+55+21+5+2 = 227.
En savoir plus sur les nombres de base de Fibonacci: lien , il dispose également d'un outil qui convertit les entiers réguliers en base de Fibonacci. Vous pouvez l'expérimenter.
Maintenant la question:
Votre tâche consiste à prendre un nombre dans la représentation de Zeckendorf et à afficher sa valeur décimale.
L'entrée est une chaîne qui ne contient que 0 et 1 (bien que vous puissiez prendre l'entrée comme vous le souhaitez).
Sortie un nombre en décimal.
Cas de test: (au format entrée-> sortie)
1001 -> 6
100101000 -> 73
1000000000 -> 89
1001000000100100010 -> 8432
1010000010001000100001010000 -> 723452
Il s'agit de code-golf, donc la réponse la plus courte en octets l'emporte.
Remarque: L'entrée ne contiendra aucun 0 ou 1 consécutif.