上級Python開発コース
チャプター
>
レベル
高度なリスト
セットのソート
目的
セットを使って食材を整理し、調理して食事を作りましょう。
食事の準備を始めるのは良いアイデアです。冷蔵庫にはいくつかの食材がラップで包まれて保存されており、料理に風味を加えるためのハーブもあります。すべての材料はリストに保管されているので、Sets を使用してアイテムを統合し、調理の効率を最大限に引き出すのが良いでしょう。
リスト定数が3つあります。そのうち2つは肉で、それぞれ pack1 と pack2 と名付けられており、1つは調理材料で ingredients という名前です。オレンジのカーペット上の暗いXマークまで歩き、冷蔵庫の方を向いて、collect() 関数を使って冷蔵庫から pack1 と pack2 を取ってください。例: player.collect(pack1).
肉が集められたら、明るいXマークまで歩き、まな板の方を向いてください。ここでは、取得したリスト定数の両方を使い、speak() 関数でパックの内容を確認します。ここから、前のレベルと同様に Sets を使ってアイテムを統合します。
set1 と set2 という名前の2つの Sets を作成し、set() 関数を使ってそれぞれに pack1 と pack2 を割り当てます。例: set1 = set(pack1).
リストが Sets に統合されたら、利便性のためにアイテムを小さな Sets に分けて整理する時です。
最初の方法は systemic_difference と呼ばれ、各 Set 間で共有されていないアイテムを分離することができます。unique という名前の Set を作成し、2つの Set を使って systemic_difference により固有のアイテムを比較・識別します。例: unique = set1.symmetric_difference(set2). 作成した Set の内容を確認するために、speak() メソッドを使用してください。
次に、shared という名前の Set を作成し、前のレベルで学んだ intersection メソッドを使って、両方の Set に共通するアイテムを特定してください。2つの Set を使ってアイテムを比較・識別します。例: shared = set1.intersection(set2). 作成した Set の内容を確認するために、speak() メソッドを使用してください。
最後に、difference というメソッドを使用します。これは、一方の Set にのみ存在し、もう一方には存在しないアイテムを分離するのに役立ちます。meat1 と meat2 という2つの Set を作成し、元の2つの Set を使って difference によりアイテムを比較・識別します。例: meat1 = set1.difference(set2) および meat2 = set2.difference(set1). 作成した両方の肉用 Set の内容を確認するために、speak() メソッドを使用してください。
これで肉の仕分けが完了しました。青いカーペット上の暗いXマークまで歩き、冷蔵庫の方を向いて、place() 関数を使って作成した shared Set を保管してください。例: player.place(shared). これにより、調理しない材料を片付けることができます。
金色のXマークまで歩き、キャビネットの方を向いて、collect() 関数を使って最後のリスト定数 ingredients を取得し、speak() 関数でその内容を確認してください。ingredients の要素を新しい Set set3 に渡してください。これで必要なすべての材料が揃いましたので、調理に必要な全要素を組み合わせるために、union メソッドを使用して meal1 と meal2 という2つの Set を作成してください。
meal1 については、set3 と meat1 を次のように組み合わせてください: meal1 = set3.union(meat1). 紫のカーペット上の暗いXマークまで歩き、meal1 Set を使い、speak() 関数で内容を確認し、place() 関数を使って鍋で料理を調理してください。
meal2 でも同様に行いますが、set3 と meat2 を組み合わせる union メソッドを使用してください。黄色のカーペット上の暗いXマークまで歩き、鍋の方を向いて、meal2 を使い speak() と place() 関数を実行してレベルを完了させてください。