Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python Coding Help
#1
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.
Reply
#2
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.
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
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.
Reply
#4
(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.
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020