Acerca de las representaciones de Zeckendorf / Números de base de Fibonacci
Este es un sistema de números que utiliza los números de Fibonacci como base. Los números consisten en 0 y 1 y cada 1 significa que el número contiene el número de Fibonacci correspondiente, y 0 significa que no.
Por ejemplo, convierta todos los números naturales <= 10 a Fibonacci base.
1 se convertirá en 1, porque es la suma de 1, que es un número de Fibonacci,
2 se convertirá en 10, porque es la suma de 2, que es un número de Fibonacci, y no necesita 1, porque ya logramos la suma deseada.
3 se convertirá en 100, porque es la suma de 3, que es un número de Fibonacci y no necesita 2 o 1 porque ya logramos la suma deseada.
- 4 se convertirá en 101, porque es la suma de [3,1], los cuales son números de Fibonacci.
- 5 se convertirá en 1000, porque es la suma de 5, que es un número de Fibonacci, y no necesitamos ninguno de los otros números.
- 6 se convertirá en 1001, porque es la suma de los números de Fibonacci 5 y 1.
- 7 se convertirá en 1010, porque es la suma de los números de Fibonacci 5 y 2.
- 8 se convertirá en 10000, porque es un número de Fibonacci.
- 9 se convertirá en 10001, porque es la suma de los números de Fibonacci 8 y 1.
- 10 se convertirá en 10010, porque es la suma de los números 8 y 2 de Fibonacci.
Vamos a convertir un número aleatorio de Base Fibonacci, 10101001010 a decimal: Primero escribimos los números de Fibonacci correspondientes. Luego calculamos la suma de los números debajo de 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.
Lea más sobre los números de Base Fibonacci: enlace , también tiene una herramienta que convierte enteros regulares en base de Fibonacci. Puedes experimentar con eso.
Ahora la pregunta:
Su tarea es tomar un número en la representación de Zeckendorf y generar su valor decimal.
La entrada es una cadena que contiene solo 0 y 1 (aunque puede tomar la entrada de la forma que desee).
Salida de un número en decimal.
Casos de prueba: (en el formato de entrada-> salida)
1001 -> 6
100101000 -> 73
1000000000 -> 89
1001000000100100010 -> 8432
1010000010001000100001010000 -> 723452
Este es el código de golf, por lo que gana la respuesta más corta en bytes.
Nota: La entrada no contendrá ningún 0 inicial o 1 consecutivo.