teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2016/07/04 13:06

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -4,24 +4,37 @@
4
4
  やりたいことを実現する一つの案として以下を参考にしてみてください。
5
5
 
6
6
  ```swift
7
- var x:[[String]] = [["a", "b"], ["c", "d"], ["e", "f"], ["g", "h"], ["i", "j"]]
7
+ var x:[[String]] = [["a", "b"], ["c", "d"], ["e", "f"], ["g", "h"], ["i", "j"], ["i", "aj"]]
8
8
  var y:[[String]] = [["a", "b"], ["c", "d"], ["e", "f"]]
9
9
 
10
+
11
+ // resultFlgには「y」の要素が全て「x」に含まれている場合は'true', 含まれていない場合は'false'が入る
12
+
13
+ // (true)は初期値, forwardFlgは前のBool値が入ってくる(最初は初期値'true')
14
+ // elementYは「y」の要素が毎回入ってくる 1: ["a", "b"], 2: ["c", "d"], 3: ["e", "f"]
15
+
10
- var result = y.reduce(true) { (val, value) -> Bool in
16
+ let resultFlg = y.reduce(true) { (forwardFlg, elementY) -> Bool in
11
17
 
18
+ // 前のフラグが'false'だった場合は、含まれていない値があったので'false'を返す
12
- if !val {
19
+ if !forwardFlg {
13
20
  return false
14
21
  }
15
22
 
23
+ // xの配列の要素を一つづつ取り出す
16
- for val in x {
24
+ for elementX in x {
17
- var b: Bool = value == val
25
+ if elementY == elementX {
18
- if b {
26
+ // elementYが「x」に含まれていたので'true'を返す(次のforwardFlgは'true'になる)
19
27
  return true
20
28
  }
21
29
  }
30
+
31
+ // 今回のelementYは「x」に含まれていなかったので'false'を返す(次のforwardFlgは'false'になる)
22
32
  return false
23
33
  }
24
34
 
25
- result
35
+ resultFlg
26
36
  //=> true
27
- ```
37
+ ```
38
+
39
+
40
+

2

修正

2016/07/04 13:06

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -1,4 +1,5 @@
1
- `var z = Set(x)`の初期化ができないので無理ですね。
1
+ `var z = Set(x)`の初期化ができないので難しいですね。
2
+ ※`x`を`Set`に渡せるように適合させることもできるかなぁと思いましたが、自分では分かりませんでした、、、
2
3
 
3
4
  やりたいことを実現する一つの案として以下を参考にしてみてください。
4
5
 

1

修正

2016/07/01 22:49

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -1,6 +1,6 @@
1
- setは`var z = set(x)`の初期化ができないのでそもそも無理ですね。
1
+ `var z = Set(x)`の初期化ができないので無理ですね。
2
2
 
3
- やりたいことを実現するには以下方法があるます
3
+ やりたいことを実現する一つして以下を参考にしてみてください。
4
4
 
5
5
  ```swift
6
6
  var x:[[String]] = [["a", "b"], ["c", "d"], ["e", "f"], ["g", "h"], ["i", "j"]]