Friends Friends
Simple
Japanese RU EN FR

"How to find friends" のミッションでは、特別に作られたデータ構造にアクセスすることはすばらしいです。 このミッションでは友人ネットワークを格納し扱うためのデータ構造を体得するでしょう。

新しいFriendsのインスタンスを返します。 "connections" はそれぞれ2つの要素を持つ反復可能(iterable)な集合(set)です。 それぞれのconnection は2つの名前の文字列を含みます。 connection は最初のデータでは繰り返すことが出来ますが、一度しか格納されません。 それぞれのconnection は2つの状態しかありません -- 存在するかしないか。

>>> Friends(({"a", "b"}, {"b", "c"}, {"c", "a"}, {"a", "c"}))
>>> Friends([{"1", "2"}, {"3", "1"}])

add(connection)

インスタンスにconnection を追加します。 "connection" は2つの名前(文字列)の集合です。 このconnectionが新しかったらTrueを返します。 このconnectionが既に存在していたらFalseを返します。

>>> f = Friends([{"1", "2"}, {"3", "1"}])
>>> f.add({"1", "3"})
False
>>> f.add({"4", "5"})
True

remove(connection)

インスタンスからconnection を削除します。 "connection" は2つの名前(文字列)の集合です。 connection が存在していたらTrueを返します。 インスタンスに connection が存在していなかったらFalseを返します。

>>> f = Friends([{"1", "2"}, {"3", "1"}])
>>> f.remove({"1", "3"})
True
>>> f.remove({"4", "5"})
False

names()

名前の集合(set)を返します。この集合は誰かと関係のある名前だけを含みます。

>>> f = Friends(({"a", "b"}, {"b", "c"}, {"c", "d"}))
>>> f.names()
{"a", "b", "c", "d"}
>>> f.remove({"d", "c"})
True
>>> f.names()
{"a", "b", "c"}

connected(name)

与えられた"name" と関係する名前の集合を返します。 もしインスタンスに"name" が存在しなかったら空の集合を返します。

>>> f = Friends(({"a", "b"}, {"b", "c"}, {"c", "a"}))
>>> f.connected("a")
{"b", "c"}
>>> f.connected("d")
set()
>>> f.remove({"c", "a"})
True
>>> f.connected("c")
{"b"}
>>> f.remove({"c", "b"})
True
>>> f.connected("c")
set()

このミッションではすべてのデータは正しいので、値のチェックを実装する必要はありません。

入力 Friendsクラスのステートメントと式

出力 前述したふるまい

どうやって使われるか ここでは状態が変更可能なクラスを実装します。 これはいくつかの関数を持ち単純ではない構造で、オブジェクトの表現はより複雑になってます。

事前条件 すべてのデータは正しい

You should be an authorized user in order to see the full description and start solving this mission.