2016-11-30 5 views
0

ここで私は上の隠されたテストに失敗してるの挑戦です:はテスト隠しCodeFightsに失敗する - コード内の欠陥を見つけることができない

考えると、整数nは、LとRは、n個のように表現するために、いくつかの方法を見つけますl≤A≤B≤rとなるような2つの整数AとBの和。

はここに私のコードです:

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 

それは私がのための入力(と私は考えることができ、すべてのカスタム1)を見ることができるすべてのテストにパスしたが、隠されたものの一つに障害が発生しました。私が紛失している明白な欠陥はありますか?ありがとう

+0

これが本当にPythonであれば、私はこの欠陥を見つけることができます。あなたのインデントは*ウェイ*オフです。 – usr2564301

+2

'if(l + r> n):' - それはどうしたら不可能なのでしょうか? – user2357112

答えて

1

user2357112で指摘されているように、11、5、9などのいくつかの有効なケースを拒否しました。

n == 2 * r + 1のように、11,2,5などの整数除算のために無効なケースを拒否することもできませんでした。 R + R < Nは、このケースをキャッチしますが、これはあなたのR <(N/2)の場合は

冗長であることを意味します。しかし、これらのケースでは、あなたの計算は当然0 私はここで間違っているを返します

まだテストに問題がある場合は、テストクラスとテストベクトル(入力セット)を含めてください。