• Need some hint

Question related to mission Stair Steps

 

My logic is wrong because I tried to solve it in a sequential way. I need some hint on how to properly solve this.

Here's my code. It fails the last test because it always looks for "the coming 2 steps" without looking at the whole picture.

====

def checkio(numbers):

reverse_order = list(reversed(numbers)) # reverse the order of numbers and assign it to new variable
ans = []

#shift through the last 2 list elements of the "reversed list"
while len(reverse_order)> 0:
    l= reverse_order[-2:] # get the last 2 element
    if l[-1] > 0:   # if the last element is positive, add it to the ans list
        ans.append(l.pop())
        reverse_order.pop() #remove this element

    elif l[-1] < 0: # if the last element is negative, need to compare with the 2nd last element
        if l[-2] > 0: #if the 2nd last element > 0, add this element to the ans list.
            reverse_order.pop() #remove the last element
            l.pop()
            ans.append(l.pop()) #append and remove again
            reverse_order.pop()

        elif l[-2] <0:
                if l[-2] > l[-1]:
                reverse_order.pop()
                l.pop()
                ans.append(l.pop())
                reverse_order.pop()

            elif l[-2] < l[-1]:

                ans.append(l.pop())
                reverse_order.pop()

    print('ans: ',ans)
    print ('sum: ', sum(ans))

return(sum(ans))

These "asserts" using only for self-checking and not necessary for auto-testing

if name == 'main': # assert checkio([5, -3, -1, 2]) == 6, 'Fifth' # assert checkio([5, 6, -10, -7, 4]) == 8, 'First' # assert checkio([-11, 69, 77, -51, 23, 67, 35, 27, -25, 95]) == 393, 'Second' assert checkio([-21, -23, -69, -67, 1, 41, 97, 49, 27]) == 125, 'Third' print('All ok')