回答編集履歴

2

add simpler method

2020/07/13 00:39

投稿

YufanLou
YufanLou

スコア464

test CHANGED
@@ -1,3 +1,33 @@
1
+ 追記:fuzzballさんより、問題のフォーマットなら、日付順がちょうど辞書順と同じなので、直接比較しても大丈夫です。教えてくれてありがとうございます!
2
+
3
+
4
+
5
+ ```swift
6
+
7
+ var dictionary_box:[[String:String]] =
8
+
9
+ [["name": "たろう", "money": "1000円", "birth_date": "2020年05月15日"],
10
+
11
+ ["name": "じろう", "money": "20000円", "birth_date": "2020年05月20日"],
12
+
13
+ ["name": "としろう", "money": "1001円", "birth_date": "2020年05月18日"]]
14
+
15
+
16
+
17
+ let sorted = dictionary_box.sorted { $0["birth_date"]! > $1["birth_date"]! }
18
+
19
+ ```
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ 元の回答:
28
+
29
+
30
+
1
31
  ```swift
2
32
 
3
33
  var dictionary_box: [[String : String]] =

1

コード修正

2020/07/13 00:39

投稿

YufanLou
YufanLou

スコア464

test CHANGED
@@ -32,12 +32,22 @@
32
32
 
33
33
  let day = Int($0[db...de])!
34
34
 
35
+ // print(year, month, day)
36
+
35
37
  return (year, month, day)
36
38
 
37
39
  }
38
40
 
39
- return d[0].0 > d[1].0 || d[0].1 > d[1].1 || d[0].2 > d[1].2
41
+ return d[0].0 != d[1].0 ? d[0].0 > d[1].0
42
+
43
+ : d[0].1 != d[1].1 ? d[0].1 > d[1].1
44
+
45
+ : d[0].2 > d[1].2
40
46
 
41
47
  }
42
48
 
43
49
  ```
50
+
51
+
52
+
53
+ 修正:ただ年月日の比較を`||`(OR)で繋がったら、年か月か日か一つだけ大きいの方が前にしてしまいます。上記のようで、年が同じの場合だけ月を比較していいです。