Défi
Vous devez générer un programme ou une fonction qui prend un entier positif N, calcule les premiers N termes de la séquence de Fibonacci en binaire, la concatène en un seul nombre binaire, reconvertit ce nombre en décimal, puis sort la décimale sous la forme d'un entier.
Par exemple
1 -> [0] -> 0 to decimal outputs 0
3 -> [0, 1, 1] -> 011 to decimal outputs 3
4 -> [0, 1, 1, 10] -> 01110 to decimal outputs 14
Vous n'avez pas besoin de sortir le ->
, juste le numéro (par exemple si l'utilisateur tape 4
, juste de sortir 14
). Les flèches sont juste pour aider à expliquer ce que le programme doit faire.
Cas de test
1 -> 0
2 -> 1
3 -> 3
4 -> 14
5 -> 59
6 -> 477
7 -> 7640
8 -> 122253
9 -> 3912117
10 -> 250375522
11 -> 16024033463
12 -> 2051076283353
13 -> 525075528538512
14 -> 134419335305859305
15 -> 68822699676599964537
16 -> 70474444468838363686498
17 -> 72165831136090484414974939
18 -> 147795622166713312081868676669
19 -> 605370868394857726287334099638808
20 -> 4959198153890674493745840944241119317
Le programme doit pouvoir sortir jusqu'à la limite de la langue utilisée. Aucune table de recherche ou solution de contournement commune n'est autorisée.
C'est le code-golf , donc la réponse avec le plus petit nombre d'octets gagne!
int32_t binary_concat_Fib(int n)
, ce qui limiterait la valeur de sortie résultante à 2 ^ 31-1. c'est-à-dire que vous pouvez supposer que tous les bits concaténés tiennent dans un entier. Ou la fonction devrait-elle fonctionner jusqu'au point où le plus grand nombre de Fibonacci ne tient pas seul dans un entier, de sorte que la concaténation des bits nécessite une précision étendue?