Voici comment je m'approcherais de cela.
L'algorithme principal pourrait rechercher des triplets puis essayer de les étendre en une séquence aussi longue que possible.
Cela nous laisse avec le sous-problème de trouver des triplets. Donc, si vous parcourez une chaîne pour rechercher des nombres de Fibonacci, une chose dont vous pouvez profiter est que le nombre suivant doit avoir le même nombre de chiffres ou un chiffre de plus.
par exemple, si vous avez la chaîne "987159725844" et que vous considérez "[987]159725844" alors la prochaine chose que vous devez regarder est "987[159]725844" et "987[1597]25844". Ensuite, la prochaine partie que vous trouveriez est "[2584]4" ou "[25844]".
Une fois que vous avez les 3 nombres, vous pouvez vérifier s'ils forment une progression arithmétique avec C - B == B - A
. S'ils le font, vous pouvez alors vérifier s'ils font partie de la séquence de Fibonacci en vérifiant si le ratio est d'environ 1,6, puis en exécutant l'itération de Fibonacci à rebours jusqu'aux conditions initiales 1,1.
L'algorithme global fonctionnerait donc en parcourant la recherche de tous les triplets en commençant par une largeur de 1, puis une largeur de 2, une largeur de 3 jusqu'à 6.
0 votes
Il devrait être très difficile d'effectuer cela (si même possible sans faire fondre votre CPU, du moins je ne peux pas penser à un moyen) par force brute. Il pourrait y avoir un algorithme astucieux ou une technique mathématique pour vérifier si un nombre est un nombre de Fibonacci ou non, mais vous devrez quand même essayer toutes les combinaisons possibles contre cet algorithme et ce n'est pas une tâche très facile! Les nombres que vous avez donnés sont trop grands!
1 votes
Combien d'éléments doivent avoir, au moins, la séquence correspondante ? Dans votre exemple, il y a 11 éléments. Est-ce que ça suffirait juste un ?
0 votes
@UbdusSamad Il existe quelques formules pour calculer si un nombre appartient à la séquence de Fibonacci, de plus le premier indice de la séquence doit être inférieur à 6 chiffres, donc je ne pense pas que cette opération nécessite des coûts élevés en CPU. Je vais mettre à jour la question.
0 votes
@LittleSanti J'ai mis à jour la question.
0 votes
Comment évaluez-vous
1111
?