2016-11-12 3 views
0

に失敗課題です:あなたが設定しているかを把握する必要がありGoogleのfoobarのテストケースは、私はGoogleのfoobarのチャレンジを完了するんだけど、私の人生のために、私はここで、第4回テストケースを渡すことはできません

アレイごとに最大出力を維持しながら、オフラインで修理できるパネルの数を確認してください。そうするためには、まず各アレイの最大出力が実際何であるか把握する必要があります。配列内の各パネルの出力レベルを表す整数のリストを取得し、それらの数字の空でないサブセットの最大積を返す関数解答(xs)を書く。アレイ[2、-3、1、0、-5]の電力出力レベルを有するパネルを含んでいたのであれば、例えば、最大生成物は、部分集合を取ることによって見出される:

xs[0] = 2, xs[1] = -3, xs[4] = -5, giving the product 2*(-3)*(-5) = 30. So answer([2,-3,1,0,-5]) will be "30".

各ソーラーパネルのアレイには、少なくとも1枚から50枚以下のパネルが含まれており、各パネルの絶対値は1000以下の出力レベルを持ちます(一部のパネルは誤動作してエネルギーを消費していますが、パネルのウェーブスタビライザーでトリックすることで、2つのマイナス出力パネルを結合して複数のパワー値の正の出力を生成することができます)。最終的な製品は非常に大きくなる可能性があるので、答えを数値の文字列表現として与えてください。ここで

は、いくつかの特定のテストケースされています

テストケース

Inputs: 
    (int list) xs = [2, 0, 2, 2, 0] 
Output: 
    (string) "8" 

Inputs: 
    (int list) xs = [-2, -3, 4, -5] 
Output: 
    (string) "60" 

そして、ここに私のコードです:

def product_of_values(lst): 
    product = 1 
    if len(lst) > 0: 
     for x in lst: 
      product *= x 
    return product 




def answer(xs): 
    # two seperate list for positive and negative values 
    positive_list = [x for x in xs if x > 0] 
    negative_list = [x for x in xs if x < 0] 
    pos_product = product_of_values(pos_list) 

# multiplication of an even number of negatives == positive value 
if len(negative_list) % 2 == 0: 
    negative_product = product_of_values(negative_list) 

# if length of negative_list is odd, pop value closest to zero 
else: 
    neg_list.remove(max(neg_list)) 
    neg_product = product_of_values(neg_list) 

# If there is only one negative value in the negative_list, return 0. 
if len(pos_list) < 1 and len(neg_list) <= 1: 
    return '0' 
else: 
    return str(neg_product * pos_product) 

私は明らかに何かが足りないのですか?

+0

あなたのコードでは、文はそのケースを扱う場合、私は私の下を信じて、負の値 –

+0

@edi_allenで1つの要素のリストのケースを扱うように思われません。それを処理する正しい方法ではなく「0」を返していますか? – David

+0

私は、その場合の答えは負の価値そのものであるべきだと思います。 –

答えて

0

多分、時間の複雑さはここで問題です。製品の

はこれを試す -

from operator import mul 
reduce(mul, list, 1) 
関連する問題