回答編集履歴

3

修正

2016/07/04 13:06

投稿

_Kentarou
_Kentarou

スコア8490

test CHANGED
@@ -10,17 +10,31 @@
10
10
 
11
11
  ```swift
12
12
 
13
- var x:[[String]] = [["a", "b"], ["c", "d"], ["e", "f"], ["g", "h"], ["i", "j"]]
13
+ var x:[[String]] = [["a", "b"], ["c", "d"], ["e", "f"], ["g", "h"], ["i", "j"], ["i", "aj"]]
14
14
 
15
15
  var y:[[String]] = [["a", "b"], ["c", "d"], ["e", "f"]]
16
16
 
17
17
 
18
18
 
19
+
20
+
21
+ // resultFlgには「y」の要素が全て「x」に含まれている場合は'true', 含まれていない場合は'false'が入る
22
+
23
+
24
+
25
+ // (true)は初期値, forwardFlgは前のBool値が入ってくる(最初は初期値'true')
26
+
27
+ // elementYは「y」の要素が毎回入ってくる 1: ["a", "b"], 2: ["c", "d"], 3: ["e", "f"]
28
+
29
+
30
+
19
- var result = y.reduce(true) { (val, value) -> Bool in
31
+ let resultFlg = y.reduce(true) { (forwardFlg, elementY) -> Bool in
20
32
 
21
33
 
22
34
 
35
+ // 前のフラグが'false'だった場合は、含まれていない値があったので'false'を返す
36
+
23
- if !val {
37
+ if !forwardFlg {
24
38
 
25
39
  return false
26
40
 
@@ -28,11 +42,13 @@
28
42
 
29
43
 
30
44
 
31
- for val in x {
45
+ // xの配列の要素を一つづつ取り出す
32
46
 
33
- var b: Bool = value == val
47
+ for elementX in x {
34
48
 
35
- if b {
49
+ if elementY == elementX {
50
+
51
+ // elementYが「x」に含まれていたので'true'を返す(次のforwardFlgは'true'になる)
36
52
 
37
53
  return true
38
54
 
@@ -40,14 +56,26 @@
40
56
 
41
57
  }
42
58
 
59
+
60
+
61
+ // 今回のelementYは「x」に含まれていなかったので'false'を返す(次のforwardFlgは'false'になる)
62
+
43
63
  return false
44
64
 
45
65
  }
46
66
 
47
67
 
48
68
 
49
- result
69
+ resultFlg
50
70
 
51
71
  //=> true
52
72
 
53
73
  ```
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+

2

修正

2016/07/04 13:06

投稿

_Kentarou
_Kentarou

スコア8490

test CHANGED
@@ -1,4 +1,6 @@
1
- `var z = Set(x)`の初期化ができないので無理ですね。
1
+ `var z = Set(x)`の初期化ができないので難しいですね。
2
+
3
+ ※`x`を`Set`に渡せるように適合させることもできるかなぁと思いましたが、自分では分かりませんでした、、、
2
4
 
3
5
 
4
6
 

1

修正

2016/07/01 22:49

投稿

_Kentarou
_Kentarou

スコア8490

test CHANGED
@@ -1,8 +1,8 @@
1
- setは`var z = set(x)`の初期化ができないのでそもそも無理ですね。
1
+ `var z = Set(x)`の初期化ができないので無理ですね。
2
2
 
3
3
 
4
4
 
5
- やりたいことを実現するには以下の方法があると思ます
5
+ やりたいことを実現する一つの案として以下を参考にしてみてください。
6
6
 
7
7
 
8
8