回答編集履歴
3
修正
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
|
-
|
16
|
+
let resultFlg = y.reduce(true) { (forwardFlg, elementY) -> Bool in
|
11
17
|
|
18
|
+
// 前のフラグが'false'だった場合は、含まれていない値があったので'false'を返す
|
12
|
-
if !
|
19
|
+
if !forwardFlg {
|
13
20
|
return false
|
14
21
|
}
|
15
22
|
|
23
|
+
// xの配列の要素を一つづつ取り出す
|
16
|
-
for
|
24
|
+
for elementX in x {
|
17
|
-
|
25
|
+
if elementY == elementX {
|
18
|
-
|
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
|
-
|
35
|
+
resultFlg
|
26
36
|
//=> true
|
27
|
-
```
|
37
|
+
```
|
38
|
+
|
39
|
+
|
40
|
+
|
2
修正
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
修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
|
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"]]
|