Python Forum

Full Version: Python Coding Help
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Question: https://app.codility.com/programmers/les...pth/start/

My code:

if len(A) < 3:
        return 0
    elif len(A) > 2 and all(A[i] >= A[i+1] for i in range(0,len(A)-1)):
        return 0
    elif len(A) > 2 and all(A[i] < A[i+1] for i in range(0,len(A)-1)):
        return 0
    else:
        list1 = []
        while len(A) != 1:
            if A[0] <= A[1]:
                A = A[1:]
            elif all(A[i] > A[i+1] for i in range(0,len(A)-1)):
                list1 += [0]
                break
            else:
                j = 2
                while j < len(A):
                    if A[j] <= A[1]:
                        j += 1
                    else:
                        if A[0] <= A[j]:
                            list1 += [A[0]-min(A[0:j])]
                            A = A[j:]
                            break
                        else:
                            if A[j+1:] != []:
                                M = max([e for e in A[j:] if A[j] <= e <= A[0]])
                                list1 += [min(A[0],M)-min(A[0:j])]
                                A = A[j:]
                                break
                            else:
                                list1 += [min(A[0],A[j])-min(A[0:j])]
                                A = A[j:]
                                break
        return max(list1)
Would like to know where is the error on my code and what other cases I miss out.
Thank you.
One has to register in order to see the task. I doubt anyone would do just to help you. Post the full text of the assignment here.
Question

You are helping a geologist friend investigate an area with mountain lakes. A recent heavy rainfall has flooded these lakes and their water levels have reached the highest possible point. Your friend is interested to know the maximum depth in the deepest part of these lakes.

We simplify the problem in 2-D dimensions. The whole landscape can be divided into small blocks and described by an array A of length N. Each element of A is the altitude of the rock floor of a block (i.e. the height of this block when there is no water at all). After the rainfall, all the low-lying areas (i.e. blocks that have higher blocks on both sides) are holding as much water as possible. You would like to know the maximum depth of water after this entire area is flooded. You can assume that the altitude outside this area is zero and the outside area can accommodate infinite amount of water.

For example, consider array A such that:

A[0] = 1
A[1] = 3
A[2] = 2
A[3] = 1
A[4] = 2
A[5] = 1
A[6] = 5
A[7] = 3
A[8] = 3
A[9] = 4
A[10] = 2

Thus, blocks 3 and 5 have a water depth of 2 while blocks 2, 4, 7 and 8 have a water depth of 1. Therefore, the maximum water depth of this area is 2.

Write a function:

def solution(A)

that, given a non-empty array A consisting of N integers, returns the maximum depth of water.

Given array A shown above, the function should return 2, as explained above.

For the following array:

A[0] = 5
A[1] = 8
the function should return 0, because this landscape cannot hold any water.

Write an efficient algorithm for the following assumptions:

N is an integer within the range [1..100,000];
each element of array A is an integer within the range [1..100,000,000].

My code is shown above and I would like to know where is the error and what cases have I missed out.
Thank you.
(Nov-29-2019, 03:27 AM)peterchew240 Wrote: [ -> ]My code is shown above and I would like to know where is the error and what cases have I missed out.
What error? That A isn't defined? Something else? You should really spell this out as much as you can. Is this your full code? If not, that's what you should be giving us, not an out-of-context snippet.