2017-10-23 5 views
2

このプログラムの入力は2セットです。それぞれの行は別々の行にあります。セットの要素はスペースで区切られています。失敗したテスト#2。間違った答え

プログラムは、これらのセットの対称の違いを出力する必要があります。

セットの対称差{1、2を、3}と{0、1、2}に等しい{0,3}。

サンプル入力:

1 2 3 
0 1 2 

サンプル出力:

0 3 

マイソリューション:

set_1 = set(input()) 
set_2 = set(input()) 

difference_set1 = set_1 - set_2 
difference_set2 = set_2 - set_1 

for x in difference_set1: 
    difference_set2.add(x) 

for x in difference_set2: 
    print(x, end=' ') 

テ結果は失敗しています...誰かが説明してください:

答えて

1

あなたのコードは正常に動作します。以下は同じもののドライバテストです。

IN : 1 2 3 
IN : 0 1 2 

OUT : 0 3 

しかし、小さなlogical mistakeがあります。あなたの入力を適切に処理していません。しかし、最終的には、あなたのために幸いなことに、は問題をキャンセルします。が作成される可能性があります。

彼らは次のようになります。

set_1 = set(map(int,input().split())) 
set_2 = set(map(int,input().split())) 

#OR just 

set_1 = set(input().split()) 
set_2 = set(input().split()) 

あなたのコードと正しいコードの働きで一目。

>>> s = set(input())       #your code 
    1 2 3 
>>> s 
=> {'1', '2', ' ', '3'} 

>>> s = set(map(int, input().split()))  #should be 
    1 2 3 
>>> s 
=> {1, 2, 3} 
+0

ない、それは概念的にはましだということ、またはそれ以上には優れていますが、分割をintにマップする必要はありません。分割された文字列で作業するだけで済みます。 –

+0

@EricoBorba、私は知っています。しかし、サンプル出力は 'int'と思われるので、そのまま出力します。 –

+0

それは働いた...すばやく返事をいただきありがとうございます。 複雑さを軽減する方法はありますか? 今は12.65の複雑度スコアを示し、最高の複雑度スコアは4.12です。 –

1

のは、あなたの入力を印刷してみましょう:入力1 2 3については

input_set = set(input()) 
print(input_set) 
  • 、それは入力1,2,3について{' ', '3', '1', '2'}
  • を印刷し、それは入力123について{',', '3', '1', '2'}
  • を印刷し、それを印刷します{'3', '1', '2'}

ご覧のとおり、入力内容に問題があります。

123012のような空白のない入力を使用できます。

それとも、あなたは2つの数値の間にスペースを使用したい場合は、あなたがsplit()を使用することができます。

input_set = set(input().split()) 
print(input_set) 

を入力:

1 2 3 

出力:

{'3', '2', '1'} 
関連する問題