-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolution.py
26 lines (19 loc) · 1.14 KB
/
solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Well met with Fibonacci bigger brother, AKA Tribonacci.
# As the name may already reveal, it works basically like a Fibonacci,
# but summing the last 3 (instead of 2) numbers of the sequence to generate the next.
# And, worse part of it, regrettably I won't get to hear non-native Italian speakers trying to pronounce it :(
# So, if we are to start our Tribonacci sequence with [1, 1, 1] as a starting input (AKA signature),
# we have this sequence:
# [1, 1 ,1, 3, 5, 9, 17, 31, ...]
# But what if we started with [0, 0, 1] as a signature? As starting with [0, 1] instead of [1, 1]
# basically shifts the common Fibonacci sequence by once place,
# you may be tempted to think that we would get the same sequence shifted by 2 places,
# but that is not the case and we would get:
# [0, 0, 1, 1, 2, 4, 7, 13, 24, ...]
# Well, you may have guessed it by now, but to be clear:
# you need to create a fibonacci function that given a signature array/list,
# returns the first n elements - signature included of the so seeded sequence.
def tribonacci(signature, n):
while len(signature) < n:
signature.append(sum(signature[-3:]))
return signature[:n]