2016/12/02 13:00- python [前回まで] 疑問点が解消された Text を進めるより、基本的な機能を、習熟する python の基本機能(?) 標準的に提供されている Data 構造が強力 # prototyping 言語 (rapid development language) # すばやく機能を実現する事を優先し、効率や保守性は後回し # 多少の誤りを含んでいても、それなりに動く # 高機能で、便利(柔軟性が高い)が、効率は(?) 代表例(Data 構造) List, 辞書, 正規表現, etc... [List で色々やる] [テーマ] (演習) List で、集合操作を作ろう ! A の要素の List は、A の部分集合ではない ! A の要素のいくつかに順序をつけたもの ! 「順序」という「追加情報」がある ! 「A List には、A の同じ要素を複数含める事ができる」 ! 例 ! 整数のリスト [ 1, 2, 1, 2, 1, 2 ] ! { {1,{1}}, {2,{2}}, {3,{1}}, .. } ! 1 番目が 1, ! 2 番目が 2, ! 3 番目が 1 演習問題 # 以下、要素の集合としては、整数しか考えなくてもよい # が、同じプログラムが、整数以外でも利用できるように # 作成する事 1. S を集合とし、a を要素とする時に、 a が S 要素かどうかを判定する関数 memberOf をつくれ memberOf( S, a ) a が S の要素なら True そうでなければ False になる 例: memberOf( [1,2,3], 2 ) -> True memberOf( [1,2,3], 4 ) -> False # これは、S が集合でなく、List でも動く様に考える # -> 2 番でも利用できる 2. 与えられた List から、それと同じ要素を含む 要素の重複していない List を作る関数 toSet をつくれ S = toSet(L) で、S には、L と同じ要素を含む「集合」になる 以下、このように、要素が重複をしていない List を、単に「集合」と呼ぶ事にする [1,2] は集合 [1,1,2] は集合でない [2,1] も集合で、[1,2] と [2,1] は異るリストだが、 同じ集合 例: toSet( [1,2,1,2,1,2] ) -> [1,2] ( [2,1] でも良い ) 3. 二つの集合 S1, S2 が同じかどうかを調べる関数 equalSet をつくれ equlaSet(S1,S2) S1 と S2 が同じなら True そうでなければ False 例: equlaSet([1,2],[1,2]) -> True equlaSet([1,2],[2,1]) -> True equlaSet([1,3],[2,1]) -> False 4. 二つの集合 S1, S2 で、一方が他方の部分集合かどうか を判定する関数 subsetOf をつくれ subsetOf(S1,S2) S1 が S2 の部分集合なら True、そうでないなら False 例: subsetOf([1,2,3],[1,2,3]) -> True subsetOf([1,2],[1,2,3]) -> True subsetOf([1],[1,2,3]) -> True subsetOf([],[1,2,3]) -> True subsetOf([1,2,3],[1,2]) -> False subsetOf([1,4],[1,2,3]) -> False 5. 二つの集合 S1, S2 の積集合を作る関数 intersection をつくれ intersection(S1,S2) S1 と S2 の積集合 例: intersection([1,2,3],[2,3,4]) -> [2,3] 6. 二つの集合 S1, S2 の和集合を作る関数 union をつくれ union(S1,S2) S1 と S2 の和集合 例: union([1,2,3],[2,3,4]) -> [1,2,3,4] 7. 集合 S1 から S2 の要素を取り除く、差集合を作る関数 minus をつくれ minus(S1,S2) S1 から S2 の要素を取り除いたもの 例: minus([1,2,3],[2,3,4]) -> [1] 8. 集合のリストからその和集合を求める sumSet をつくれ sumSet(SL) SL に含まれる集合の和集合を求める 例: sumSet([[1,2,3],[2,3,4],[3,4,5]]) = [1,2,3,4,5] 9. 集合のリストからその積集合を求める productSet をつくれ productSet(SL) SL に含まれる集合の積集合を求める 例: productSet([[1,2,3],[2,3,4],[3,4,5]]) = [3] ==