-2

It should be giving the integer.This is a question on hackerrank - Equal stacks

def equalStacks(h1, h2, h3):
    #
    # Write your code here.
    #
    stackSum = sumOfStack(h1, h2, h3)

    (stackSum1, stackSum2, stackSum3) = stackSum

    if stackSum1 == stackSum2 and stackSum1 == stackSum3:
        return stackSum1

    elif stackSum1 <= stackSum2:
        if stackSum2 > stackSum3:
            equalStacks(h1, h2[1:], h3)
        else:
            equalStacks(h1, h2, h3[1:])

    elif stackSum2 <= stackSum3:
        if stackSum3 > stackSum1:
            equalStacks(h1, h2, h3[1:])
        else:
            equalStacks(h1[1:], h2, h3)
    elif stackSum2 <= stackSum1:
        if stackSum1 > stackSum3:
            equalStacks(h1[1:], h2, h3)
        else:
            equalStacks(h1, h2, h3[1:])
    else:
        return -1



def sumOfStack(h1, h2, h3):
        sumN1 = sum(h1)
        sumN2 = sum(h2)
        sumN3 = sum(h3)
        return [sumN1, sumN2, sumN3]

Test cases are:

5 3 4,
3 2 1 1 1,
4 3 2,
1 1 4 1

The first if statement should return the integer instead it is returning None.

khelwood
  • 55,782
  • 14
  • 81
  • 108
Yashwant
  • 58
  • 4

1 Answers1

1

You're not returning a value in every execution path.

Add return before every time you call equalStacks.

goodvibration
  • 5,980
  • 4
  • 28
  • 61