0
def tribonacci(signature, n):
    f = 0
    if n == 0:
        return []
    if n == 1:
        return [signature[0]]
    if n == 2:
        return [signature[0], signature[1]]
    while len(signature) != n:
        i = signature[0 + f] + signature[1 + f] + signature[2 + f]
        signature.append(i)
        f += 1
    return signature

That's a Tribonacci(same with Fibonacci but with 3 numbers) code from codewars.com , I know that it could be more beautiful and elegant but i want to know how to reduce this particular part:

if n == 0:
    return []
if n == 1:
    return [signature[0]]
if n == 2:
    return [signature[0], signature[1]]

Thanks!

Moon Cheesez
  • 2,489
  • 3
  • 24
  • 38
geekman17
  • 3
  • 1

2 Answers2

0

The 3 cases 0, 1, 2 can be reduced to one, because all return the signature list until the given n

if n < 3: # if 0 <= n < 3: can be used for satefy
    return signature[:n]
azro
  • 53,056
  • 7
  • 34
  • 70
0

You can see in your if statements, when n==0 return is empty list, for n==1, return one item in a list and also for n==2 return two items in a list.

So for that you can do in a one if statement as below:

if 0 <= n < 3:
   return list(signature[:n])

And here is your full code for your problem.

def tribonacci(signature, n):
   #your code here
   f = 0
   if 0 <= n < 3:
      return list(signature[:n])
   while len(signature) != n:
      i = signature[0 + f] + signature[1 + f] + signature[2 + f]
      signature.append(i)
      f += 1
   return signature
Dcoder14
  • 1,831
  • 3
  • 12
  • 22