Check for Fibonacci Like Sequence (Python)
Takes 3 values, and calculates whether they appear to be part of a Fibonacci integer sequence (i.e. g(n + 2) = g(n) + g(n + 1))
We only check if the sequence is Fibonacci like, not that the values are part of the Fibonacci sequence (for example, they may instead be a series of Lucas Numbers)
Values should be passed to the function in the order that they were observed
Return value is a list with two entries
- Boolean - are the numbers part of a sequence?
- Mixed - If part of a sequence, is the sequence running ascending (asc) or descending (desc). If not part of a sequence this values will be False
Used as part of the solution to my May 2016 Puzzle
Details
- Language: Python
- License: BSD-3-Clause
Snippet
def isPartOfFibbonaciLikeSequence(Fn,Fn1,Fn2):
''' Check whether values form part of a Fibonnaci like sequence
i.e. does Fn = Fn-1 + Fn-2
return [is sequence, direction of sequence]
'''
seq = False
order = False
# Sequences can be asc or desc, test both
if Fn + Fn1 == Fn2:
seq = True
order = 'asc'
elif Fn - Fn1 == Fn2:
seq = True
order = 'desc'
return [seq,order]
Usage Example
print isPartOfFibbonaciLikeSequence(1,1,2)
[True, 'asc']
print isPartOfFibbonaciLikeSequence(1,2,3)
[True, 'asc']
print isPartOfFibbonaciLikeSequence(2,3,4)
[False, False]
print isPartOfFibbonaciLikeSequence(2,1,1)
[True, 'desc']