John Lance
John Lance

Reputation: 13

Failing hidden CodeFights test - can't find flaw in code

Here's the challenge I'm failing a hidden test on:

Given integers n, l and r, find the number of ways to represent n as a sum of two integers A and B such that l ≤ A ≤ B ≤ r.

Here's my code:

def countSumOfTwoRepresentations2(n, l, r):
    #initializing return variable
    totalcount = 0
    #returns 0 in impossible cases
    if (l + r > n):
        return 0
    if (r + r < n):
        return 0
    if (r < (n/2)) or (l > (n/2)):
        return 0
    # finding the total number of possibilities
    p = n / 2
    # finding which if l or r is further from 0 or n, respectively
    c = max((n-r),l)
    # removing impossible cases
    totalcount = (p - c) + 1
    return totalcount

It passes all the tests I can see the inputs for (and every custom one I could think of), but fails on one of the hidden ones. Any obvious flaws I'm missing? Thanks

Upvotes: 0

Views: 1166

Answers (1)

Prune
Prune

Reputation: 77857

As user2357112 noted, you have rejected some valid cases, such as 11, 5, 9: that still permits 6+5 as a solution.

You have also failed to reject an invalid case due to integer division, such as 11, 2, 5, where n == 2*r + 1; however, in these cases, your calculations naturally return 0. I'm wrong here: r + r < n will catch this case, but this means that your r < (n/2) case is redundant

If you still have trouble with your testing, please include your test classes and test vectors (input sets).

Upvotes: 1

Related Questions