2017-05-14 1 views
-1

は私が5例2を失敗しますNjundongのポストWhy could this code possibly be failing a test case?、同様の問題を抱えています私はテストケースを渡しますが、検証に失敗した理由は何ですか?

foobar:~/power_hungry user$ verify solution.py 
Verifying solution... 

Test 1 passed! 
Test 2 passed! 
Test 3 failed. 
Test 4 failed. 
Test 5 passed! 

は私のコードが失敗する理由は、以下を参照把握することはできません :

def answer(xs): 
    negArr = 0 
    product = 1 
    for number in xs: 
     if number < 0: 
      negArr += 1 
    xs.sort() 
    while 0 in xs: xs.remove(0) 
    if negArr % 2 != 0: 
     xs.pop(negArr-1) 
    for x in xs: 
     product *= x 
    return product 

マイコードは、与えられた2つのテストケースを渡します(下記参照)。

テストケースをアドバイス

入力してください: (int型のリスト)XS = [2、0、2、2、0] 出力: (文字列) "8"

入力: ( INTリスト)XS = [-2、-3、4、-5] 出力: (文字列)、 "60"

電力ハングリー

コマンダーラムダの宇宙ステーションは、HでありますUGE。そして巨大な宇宙ステーションはたくさんの力を持っています。最悪の日曜日のデバイスを搭載した巨大な宇宙ステーションは、さらに大きなパワーを奪う。駅の電力需要を満たすために、ラムダ司令官は駅の外面に太陽電池パネルを設置しました。しかし、ステーションは、太陽電池パネルに大混乱を引き起こすクェーサー量子束場の真ん中に座っている。あなたとあなたの仲間のチームはソーラーパネルを修理するように任命されていますが、宇宙ステーションをシャットダウンすることなくそれらを一度にダウンすることはできません。

アレイごとに最大出力電力を維持しながら、オフラインで修復することができる特定のアレイのパネルセットを把握しておく必要があります。各アレイの最大出力は実際には同じです。配列内の各パネルの出力レベルを表す整数のリストを取得し、それらの数字の空でないサブセットの最大積を返す関数解答(xs)を書く。たとえば、配列に[2、-3、1、0、-5]という出力レベルのパネルが含まれていた場合、xs [0] = 2、xs [1] ] = -3、xs [4] = -5となるので、2 *( - 3)*( - 5)= 30の結果が得られる。したがって、答え([2、-3,1,0、-5])は " 30 "である。

ソーラーパネルの各アレイには、少なくとも1個以上50個以下のパネルが含まれており、各パネルには絶対値が1000以下の電源出力レベルが設定されています(一部のパネルは誤動作していますしかし、2つの負の出力パネルを組み合わせて、その電力値の倍数の正の出力を生成することができる、パネルの波安定剤を使ったトリックを知っています。最終的な製品は非常に大きくなる可能性があるので、答えを数値の文字列表現として与えてください。

テストケース

入力: (INTリスト)XS = [2,0、2、2、0] 出力: (文字列)、 "8"

入力: (INTリスト)XS = [-2、-3、4、-5] 出力: (文字列)、 "60"

改訂コード単一の負番号の会計2

  1. シングル負の数[-8]
  2. 0と1負の数[0,0,-8,0]
  3. 0の[0,0,0]
+0

解決しなければならない問題を正しく理解してもよろしいですか? (あなたは私たちに言いませんでした。いいえ、リンクはカウントされません) – user2357112

+0

あなたは本当にあなたが失敗しているテストケースであることは確かですか?リンクした質問への回答を読んだことがありますか?あなたが同じ問題を解決しているならば、あなたは非常によく似たバグを持っています。 – user2357112

+0

が問題を追加しました。私の側でさらに調査します。 – Jose

答えて

1

を返すこれが勝利のチケットだった:

def answer(xs): 
    negArr = 0 
    product = 1 
    for number in xs: 
     if number < 0: 
      negArr += 1 
    xs.sort() 
    if not xs: 
     return 0 
    if len(xs) == 1: 
     return xs[0] 
    while 0 in xs: xs.remove(0) 
    if negArr % 2 != 0: 
     xs.pop(negArr-1) 
    for x in xs: 
     product *= x 
    print(xs) 
    if len(xs) == 0: 
     return str(0) 
    else: 
     return str(product) 
+0

この時点で、私は単一の負の数(すなわち[-8])を考慮しています 任意の数の0(つまり[0]または[0,0,0])。 – Jose

+0

負であればxs [0]、0ではなくlen(xs)== 1を返しますか? – JBallin

+0

Np!私の答えを受け入れることができますか?宿題タイプの質問に答えるときは正しい方向に向ける必要があります。そのため私はコードを提供しませんでした。 – JBallin

0

:あなたは、いくつかのエッジケースを考慮していない文字列

def answer(xs): 
    negArr = 0 
    product = 1 
    for number in xs: 
     if number < 0: 
      negArr += 1 
    xs.sort() 
    while 0 in xs: xs.remove(0) 
    print(xs) 
    if not xs: 
     return 0 
    if len(xs) == 1: 
     if xs[0] < 0: 
      return 0 
    elif negArr % 2 != 0: 
     xs.pop(negArr-1) 
    for x in xs: 
     product *= x 
    return str(product) 
関連する問題