質問編集履歴

6

解決しました。

2021/02/05 18:46

投稿

anmoanmo
anmoanmo

スコア2

test CHANGED
File without changes
test CHANGED
@@ -142,6 +142,10 @@
142
142
 
143
143
 
144
144
 
145
+ アドバイスをいただき解決しました。
146
+
147
+
148
+
145
149
  ```アドバイスをいただき解決したコード
146
150
 
147
151
  let n = Int(readLine()!)!

5

解決しました。

2021/02/05 18:46

投稿

anmoanmo
anmoanmo

スコア2

test CHANGED
File without changes
test CHANGED
@@ -139,3 +139,85 @@
139
139
 
140
140
 
141
141
  ご回答よろしくお願いいたします。
142
+
143
+
144
+
145
+ ```アドバイスをいただき解決したコード
146
+
147
+ let n = Int(readLine()!)!
148
+
149
+
150
+
151
+ var hb = [(String,String)]()//ユーザー名と血液型をタプルで格納する配列
152
+
153
+ var bf = [(String,String)]()//血液型と占い結果をタプルで格納する配列
154
+
155
+
156
+
157
+ for _ in 0..<n{
158
+
159
+
160
+
161
+ let tmp = readLine()!.split(separator: " ")
162
+
163
+
164
+
165
+ let user = String(tmp[0])
166
+
167
+ let blood = String(tmp[1])
168
+
169
+
170
+
171
+ hb.append((user,blood))
172
+
173
+
174
+
175
+ }
176
+
177
+
178
+
179
+ let m = Int(readLine()!)!
180
+
181
+
182
+
183
+ for _ in 0..<m{
184
+
185
+
186
+
187
+ let tmp = readLine()!.split(separator: " ")
188
+
189
+
190
+
191
+ let blood = String(tmp[0])
192
+
193
+ let fortune = String(tmp[1])
194
+
195
+
196
+
197
+ bf.append((blood,fortune))
198
+
199
+
200
+
201
+ }
202
+
203
+
204
+
205
+
206
+
207
+ for i in hb{
208
+
209
+ for ii in bf{
210
+
211
+ if i.1 == ii.0{
212
+
213
+ print("(i.0) (ii.1)")
214
+
215
+ }
216
+
217
+ }
218
+
219
+ }
220
+
221
+
222
+
223
+ ```

4

コードの編集をしました

2021/02/05 18:45

投稿

anmoanmo
anmoanmo

スコア2

test CHANGED
File without changes
test CHANGED
@@ -63,6 +63,8 @@
63
63
  このような出力結果にしたいです。
64
64
 
65
65
  ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
66
+
67
+ 途中経過
66
68
 
67
69
  ```swift
68
70
 

3

コードの編集をしました

2021/02/05 15:52

投稿

anmoanmo
anmoanmo

スコア2

test CHANGED
File without changes
test CHANGED
@@ -66,9 +66,7 @@
66
66
 
67
67
  ```swift
68
68
 
69
- コード
69
+  
70
-
71
- ```途中経過 
72
70
 
73
71
  let n = Int(readLine()!)!
74
72
 
@@ -126,6 +124,8 @@
126
124
 
127
125
  }
128
126
 
127
+ ```
128
+
129
129
  なんとかペアで出力することはできましたが、辞書型なので順番通りに出力ができずに悩んでいます。
130
130
 
131
131
  KeyValuePairs と定義すれば順番が保持されると分かったのですが、var users : KeyValuePairs = [:]

2

コードの編集

2021/02/05 15:51

投稿

anmoanmo
anmoanmo

スコア2

test CHANGED
File without changes
test CHANGED
@@ -64,7 +64,11 @@
64
64
 
65
65
  ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
66
66
 
67
+ ```swift
68
+
69
+ コード
70
+
67
- 途中経過 
71
+ ```途中経過 
68
72
 
69
73
  let n = Int(readLine()!)!
70
74
 
@@ -74,13 +78,13 @@
74
78
 
75
79
  for _ in 0..<n{
76
80
 
77
- let tmp = readLine()!.split(separator: " ")
81
+ let tmp = readLine()!.split(separator: " ")
78
82
 
79
- let user = String(tmp[0])
83
+ let user = String(tmp[0])
80
84
 
81
- let blood = String(tmp[1])
85
+ let blood = String(tmp[1])
82
86
 
83
- users[user] = blood
87
+ users[user] = blood
84
88
 
85
89
  }
86
90
 
@@ -94,13 +98,13 @@
94
98
 
95
99
  for _ in 0..<m{
96
100
 
97
- let tmp = readLine()!.split(separator: " ")
101
+ let tmp = readLine()!.split(separator: " ")
98
102
 
99
- let blood = String(tmp[0])
103
+ let blood = String(tmp[0])
100
104
 
101
- let fortune = String(tmp[1])
105
+ let fortune = String(tmp[1])
102
106
 
103
- fortunes[blood] = fortune
107
+ fortunes[blood] = fortune
104
108
 
105
109
  }
106
110
 
@@ -108,17 +112,17 @@
108
112
 
109
113
  for (user,user_blood) in users{
110
114
 
111
- for (blood,fortune) in fortunes{
115
+ for (blood,fortune) in fortunes{
112
116
 
113
- if user_blood == blood{
117
+ if user_blood == blood{
114
118
 
115
- print("(user) (fortune)")
119
+ print("(user) (fortune)")
116
120
 
117
- break
121
+ break
118
122
 
119
- }
123
+ }
120
124
 
121
- }
125
+ }
122
126
 
123
127
  }
124
128
 

1

自分のコードを載せました。

2021/02/05 15:50

投稿

anmoanmo
anmoanmo

スコア2

test CHANGED
@@ -1 +1 @@
1
- swift ラッキーカラー占い結果出力 (初心者)
1
+ swift 辞書型 対応する値があれば、順序を保持して出力する方法
test CHANGED
@@ -64,6 +64,72 @@
64
64
 
65
65
  ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
66
66
 
67
+ 途中経過 
68
+
69
+ let n = Int(readLine()!)!
70
+
71
+ var users : [String:String] = [:]
72
+
73
+
74
+
75
+ for _ in 0..<n{
76
+
77
+ let tmp = readLine()!.split(separator: " ")
78
+
79
+ let user = String(tmp[0])
80
+
81
+ let blood = String(tmp[1])
82
+
83
+ users[user] = blood
84
+
85
+ }
86
+
87
+
88
+
89
+ let m = Int(readLine()!)!
90
+
91
+ var fortunes : [String:String] = [:]
92
+
93
+
94
+
95
+ for _ in 0..<m{
96
+
97
+ let tmp = readLine()!.split(separator: " ")
98
+
99
+ let blood = String(tmp[0])
100
+
101
+ let fortune = String(tmp[1])
102
+
103
+ fortunes[blood] = fortune
104
+
105
+ }
106
+
107
+
108
+
109
+ for (user,user_blood) in users{
110
+
111
+ for (blood,fortune) in fortunes{
112
+
113
+ if user_blood == blood{
114
+
115
+ print("(user) (fortune)")
116
+
117
+ break
118
+
119
+ }
120
+
121
+ }
122
+
123
+ }
124
+
125
+ なんとかペアで出力することはできましたが、辞書型なので順番通りに出力ができずに悩んでいます。
126
+
127
+ KeyValuePairs と定義すれば順番が保持されると分かったのですが、var users : KeyValuePairs = [:]
128
+
129
+ としてもうまくいきませんでした。
130
+
131
+
132
+
67
133
 
68
134
 
69
135
  ご回答よろしくお願いいたします。