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

回答編集履歴

15

修正

2017/01/09 06:22

投稿

退会済みユーザー
answer CHANGED
@@ -266,4 +266,7 @@
266
266
  福井県27人
267
267
  鳥取県24人
268
268
  島根県21人
269
- ```
269
+ ```
270
+ ###補足について
271
+ もしかしたらこちらの記事が参考になるかもしれません。
272
+ [Ruby文字エンコードに悩まされ、直接指定やnkfによる推測などを試した](http://qiita.com/rojiuratech/items/9d40cb294eb08f2204ac)

14

補足

2017/01/09 06:22

投稿

退会済みユーザー
answer CHANGED
@@ -53,6 +53,7 @@
53
53
  2017/01/06追記
54
54
  2017/01/07追記
55
55
  2017/01/07追記
56
+ 2017/01/09追記
56
57
  ```Ruby
57
58
  #encoding : utf-8
58
59
  f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
@@ -212,4 +213,57 @@
212
213
  puts f.map{|y| [y[3], y[0], y[2]]}.sort.select{|g| g[2] == "男"}.map{|word| word[1] + word[0] + word[2]}[0]
213
214
  puts "---------------------------------------"
214
215
  f.map!{|k| k[4]}.uniq.map{|e|[f.count(e), e]}.sort!.reverse!.map{|word| puts word[1] + word[0].to_s + "人"}
216
+ ```
217
+ ```
218
+ 実行結果例
219
+ 中沢 由宇2016/1/10女
220
+ 上山 勤2016/1/10男
221
+ ---------------------------------------
222
+ 東京都480人
223
+ 大阪府369人
224
+ 神奈川県318人
225
+ 愛知県295人
226
+ 埼玉県281人
227
+ 北海道239人
228
+ 千葉県227人
229
+ 福岡県208人
230
+ 兵庫県184人
231
+ 静岡県146人
232
+ 広島県124人
233
+ 長野県104人
234
+ 京都府104人
235
+ 宮城県98人
236
+ 岐阜県95人
237
+ 茨城県94人
238
+ 群馬県90人
239
+ 栃木県84人
240
+ 新潟県83人
241
+ 福島県80人
242
+ 鹿児島県74人
243
+ 三重県71人
244
+ 岩手県70人
245
+ 熊本県69人
246
+ 岡山県69人
247
+ 石川県62人
248
+ 愛媛県61人
249
+ 長崎県56人
250
+ 滋賀県56人
251
+ 山口県53人
252
+ 沖縄県52人
253
+ 大分県52人
254
+ 奈良県50人
255
+ 和歌山県48人
256
+ 青森県47人
257
+ 秋田県47人
258
+ 高知県39人
259
+ 佐賀県39人
260
+ 香川県38人
261
+ 山形県38人
262
+ 山梨県36人
263
+ 徳島県33人
264
+ 宮崎県33人
265
+ 富山県32人
266
+ 福井県27人
267
+ 鳥取県24人
268
+ 島根県21人
215
269
  ```

13

修正

2017/01/09 05:56

投稿

退会済みユーザー
answer CHANGED
@@ -104,7 +104,7 @@
104
104
  [2]については、生年月日順に氏名を並び替えたのち、男女で分けて男の先頭と女の先頭を
105
105
  表示することにしました。
106
106
  =end
107
- f = File.read("ファイル名").encode("UTF-8").split("\n").map{|e| e.split("\,")}
107
+ f = File.read("ファイル名.csv").encode("UTF-8").split("\n").map{|e| e.split("\,")}
108
108
  =begin
109
109
  #1:データの入ったメモ帳を読み込みます。手を加えやすいようにUTF-8にエンコードします。
110
110
    このファイルは1行で一つのまとまりになっているのでいったん改行で分割<split("\n")>
@@ -114,8 +114,8 @@
114
114
  ken = [] #2:県名を入れる配列を作ります。
115
115
  years = [] #3:氏名、生年月日、性別だけを1つにまとめた情報を入れる配列を作ります。
116
116
  f.each do |element|
117
- ken << element[5]
117
+ ken << element[4]
118
- years << [element[10], element[0], element[2]]
118
+ years << [element[3], element[0], element[2]]
119
119
  end
120
120
  =begin
121
121
  #4:f(最初に読み込んだファイル)の中身(例:[佐藤 太郎,サトウ タロウ,男,,887-4155,宮城県,xx市,xx,3-50-5,xxマンション307,1982/06/09,O ]を
@@ -147,10 +147,9 @@
147
147
  rank = num + 1 #12:順位に使う数字です。numは0から始まるので1を足さないと順位が1位からになりません。
148
148
  puts rank.to_s + "\s" + ken_count[num][1] + ken_count[num][0].to_s + "人"
149
149
  #13:rank.to_sでrankを文字にします。そうしないと文字と+できません。初めにファイルをUTF-8にエンコード
150
- # しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にした
150
+ # しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にしたrankの後ろに
151
- # rankの後ろにスペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の
151
+ # スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の1番目の要素=県名と
152
- # 2番目(配列の要素は0から数える)の要素=県名とken_count(配列)のnum番目にある要素(配列)
153
- # の1番目の要素=人数を文字にしたものを足しています。
152
+ # ken_count(配列)num番目にある要素(配列)0番目の要素=人数を文字にしたものを足しています。
154
153
  num += 1 #14:numに1を足します。そうしないと2位以降が表示されなくなります。
155
154
  if num == 5 || num > ken_count.length - 1 then
156
155
  #15:loopを抜ける処理を書いています。このloopはnum==5(numは0から始まっているので順位では6位)
@@ -180,7 +179,7 @@
180
179
  puts "男性:該当者なし"
181
180
  #24:空の場合は分かりやすいように"男性:該当者なし"と表示することにします。
182
181
  end
183
- if woman[0] != nil then #25:womanの中身が空かどうかで処理を分けます。
182
+ if woman[0] != nil then #25:manの中身が空かどうかで処理を分けます。
184
183
  puts "女性:" + woman[0][1] + woman[0][0]
185
184
  #26:空ではない場合は、男性か女性か分かりやすいように性別を表示することにして
186
185
  # womanの先頭の要素(配列)の2番目の要素(氏名)とwomanの先頭の要素(配列)
@@ -190,6 +189,17 @@
190
189
  #27:空の場合は分かりやすいように"女性:該当者なし"と表示することにします。
191
190
  end
192
191
  ```
192
+ ```
193
+ 実行結果例
194
+ 1 東京都480人
195
+ 2 大阪府369人
196
+ 3 神奈川県318人
197
+ 4 愛知県295人
198
+ 5 埼玉県281人
199
+ -------------------------------------------
200
+ 男性:上山 勤2016/1/10
201
+ 女性:中沢 由宇2016/1/10
202
+ ```
193
203
  ランキング機能を無くしてみました。
194
204
  katoy様が紹介してくださった「なんちゃって個人情報」を使ってデータを作ってみました。
195
205
  データの内容は「名前、ふりがな、性別、誕生日、都道府県、電話番号」です。

12

補足

2017/01/09 05:53

投稿

退会済みユーザー
answer CHANGED
@@ -52,6 +52,7 @@
52
52
  同じ人数になった場合はどれか一つしか表示されません。
53
53
  2017/01/06追記
54
54
  2017/01/07追記
55
+ 2017/01/07追記
55
56
  ```Ruby
56
57
  #encoding : utf-8
57
58
  f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
@@ -188,4 +189,17 @@
188
189
  puts "女性:該当者なし"
189
190
  #27:空の場合は分かりやすいように"女性:該当者なし"と表示することにします。
190
191
  end
192
+ ```
193
+ ランキング機能を無くしてみました。
194
+ katoy様が紹介してくださった「なんちゃって個人情報」を使ってデータを作ってみました。
195
+ データの内容は「名前、ふりがな、性別、誕生日、都道府県、電話番号」です。
196
+ 正確に動いているかどうかは分かりません。
197
+ ```Ruby
198
+ #encoding : utf-8
199
+ f = File.read("データ2.txt").encode("UTF-8").split("\n").map{|e| e.split("\,")}
200
+ f.shift
201
+ puts f.map{|y| [y[3], y[0], y[2]]}.sort.select{|g| g[2] == "女"}.map{|word| word[1] + word[0] + word[2]}[0]
202
+ puts f.map{|y| [y[3], y[0], y[2]]}.sort.select{|g| g[2] == "男"}.map{|word| word[1] + word[0] + word[2]}[0]
203
+ puts "---------------------------------------"
204
+ f.map!{|k| k[4]}.uniq.map{|e|[f.count(e), e]}.sort!.reverse!.map{|word| puts word[1] + word[0].to_s + "人"}
191
205
  ```

11

修正

2017/01/07 11:15

投稿

退会済みユーザー
answer CHANGED
@@ -146,9 +146,10 @@
146
146
  rank = num + 1 #12:順位に使う数字です。numは0から始まるので1を足さないと順位が1位からになりません。
147
147
  puts rank.to_s + "\s" + ken_count[num][1] + ken_count[num][0].to_s + "人"
148
148
  #13:rank.to_sでrankを文字にします。そうしないと文字と+できません。初めにファイルをUTF-8にエンコード
149
- # しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にしたrankの後ろに
149
+ # しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にした
150
- # スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の2番目の要素=県名と
150
+ # rankの後ろにスペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の
151
+ # 2番目(配列の要素は0から数える)の要素=県名とken_count(配列)のnum番目にある要素(配列)
151
- # ken_count(配列)num番目にある要素(配列)の1番目の要素=人数を文字にしたものを足しています。
152
+ # の1番目の要素=人数を文字にしたものを足しています。
152
153
  num += 1 #14:numに1を足します。そうしないと2位以降が表示されなくなります。
153
154
  if num == 5 || num > ken_count.length - 1 then
154
155
  #15:loopを抜ける処理を書いています。このloopはnum==5(numは0から始まっているので順位では6位)

10

補足

2017/01/07 01:36

投稿

退会済みユーザー
answer CHANGED
@@ -147,8 +147,8 @@
147
147
  puts rank.to_s + "\s" + ken_count[num][1] + ken_count[num][0].to_s + "人"
148
148
  #13:rank.to_sでrankを文字にします。そうしないと文字と+できません。初めにファイルをUTF-8にエンコード
149
149
  # しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にしたrankの後ろに
150
- # スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の1番目の要素=県名と
150
+ # スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の2番目の要素=県名と
151
- # ken_count(配列)のnum番目にある要素(配列)の0番目の要素=人数を文字にしたものを足しています。
151
+ # ken_count(配列)のnum番目にある要素(配列)の1番目の要素=人数を文字にしたものを足しています。
152
152
  num += 1 #14:numに1を足します。そうしないと2位以降が表示されなくなります。
153
153
  if num == 5 || num > ken_count.length - 1 then
154
154
  #15:loopを抜ける処理を書いています。このloopはnum==5(numは0から始まっているので順位では6位)

9

修正

2017/01/07 01:31

投稿

退会済みユーザー
answer CHANGED
@@ -103,7 +103,7 @@
103
103
  [2]については、生年月日順に氏名を並び替えたのち、男女で分けて男の先頭と女の先頭を
104
104
  表示することにしました。
105
105
  =end
106
- f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
106
+ f = File.read("ファイル名").encode("UTF-8").split("\n").map{|e| e.split("\,")}
107
107
  =begin
108
108
  #1:データの入ったメモ帳を読み込みます。手を加えやすいようにUTF-8にエンコードします。
109
109
    このファイルは1行で一つのまとまりになっているのでいったん改行で分割<split("\n")>

8

修正

2017/01/06 20:23

投稿

退会済みユーザー
answer CHANGED
@@ -178,7 +178,7 @@
178
178
  puts "男性:該当者なし"
179
179
  #24:空の場合は分かりやすいように"男性:該当者なし"と表示することにします。
180
180
  end
181
- if woman[0] != nil then #25:manの中身が空かどうかで処理を分けます。
181
+ if woman[0] != nil then #25:womanの中身が空かどうかで処理を分けます。
182
182
  puts "女性:" + woman[0][1] + woman[0][0]
183
183
  #26:空ではない場合は、男性か女性か分かりやすいように性別を表示することにして
184
184
  # womanの先頭の要素(配列)の2番目の要素(氏名)とwomanの先頭の要素(配列)

7

修正

2017/01/06 20:20

投稿

退会済みユーザー
answer CHANGED
@@ -98,49 +98,93 @@
98
98
 
99
99
  ```Ruby
100
100
  #encoding : utf-8
101
+ =begin
102
+ [1]について、私は単純にそれぞれの県の人数を数えて人数の多い順に並び替えることにしました。
103
+ [2]については、生年月日順に氏名を並び替えたのち、男女で分けて男の先頭と女の先頭を
104
+ 表示することにしました。
105
+ =end
101
106
  f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
107
+ =begin
108
+ #1:データの入ったメモ帳を読み込みます。手を加えやすいようにUTF-8にエンコードします。
109
+   このファイルは1行で一つのまとまりになっているのでいったん改行で分割<split("\n")>
110
+ します。このままだと1行がすべてくっついているので、くっついている1行を対象にカンマで分割
111
+ <split("\,")>します。
102
- ken = []
112
+ =end
103
- years = []
113
+ ken = [] #2:県名を入れる配列を作ります。
114
+ years = [] #3:氏名、生年月日、性別だけを1つにまとめた情報を入れる配列を作ります。
104
115
  f.each do |element|
105
116
  ken << element[5]
106
117
  years << [element[10], element[0], element[2]]
107
118
  end
119
+ =begin
120
+ #4:f(最初に読み込んだファイル)の中身(例:[佐藤 太郎,サトウ タロウ,男,,887-4155,宮城県,xx市,xx,3-50-5,xxマンション307,1982/06/09,O ]を
121
+   順番にelementに入れて処理を行います。
122
+   処理の内容は2つあって、1つは県名をとってkenに入れるもの、もう1つは生年月日、氏名、性別をとってyearsに入れるものです。
123
+ =end
108
124
 
109
- ken_list = ken.uniq
125
+ ken_list = ken.uniq #5:#4によって今、kenには県名が入っています。このkenから重複した県名を削除した新しい配列ken_listを作ります。
110
- ken_count = []
126
+ ken_count = [] #6:数えた県名の数(=その県名が含まれたデータの数)を入れておく配列を作ります。
111
- ken_list.each do |e|
127
+ ken_list.each do |e| #7:ken_listの中身(例:[沖縄県, 宮城県, 広島県])を順番にeに入れます。
112
128
  ken_count << [ken.count(e), e]
113
129
  end
130
+ =begin
131
+ #8:重複ありで県名が入っているkenを対象にe(個別の県名)の個数を調べます。その個数とe(個別の県名)を
132
+ ken_countに入れます。
133
+ =end
114
134
  ken_count.sort!.reverse!
135
+ =begin
136
+ #9:ken_countをsortします。sortをすると数字の小さい順に並べ替えられます。
137
+ 並び替えられた結果をreverseすることで数字を大きい順に並び替えることができます。
138
+ =end
115
139
  years.sort!
116
- num = 0
140
+ =begin
141
+ #10:ついでに氏名、生年月日、性別が入っているyearsもsortをします。
142
+ こちらは生年月日の古い順(=数字が小さい順)なのでsortだけで大丈夫です。
143
+ =end
144
+ num = 0 #11:県名と人数を数字の大きい順に5つ表示します。表示にはloopを使います。
117
145
  loop{
118
- rank = num + 1
146
+ rank = num + 1 #12:順位に使う数字です。numは0から始まるので1を足さないと順位が1位からになりません。
119
147
  puts rank.to_s + "\s" + ken_count[num][1] + ken_count[num][0].to_s + "人"
148
+ #13:rank.to_sでrankを文字にします。そうしないと文字と+できません。初めにファイルをUTF-8にエンコード
149
+ # しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にしたrankの後ろに
150
+ # スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の1番目の要素=県名と
151
+ # ken_count(配列)のnum番目にある要素(配列)の0番目の要素=人数を文字にしたものを足しています。
120
- num += 1
152
+ num += 1 #14:numに1を足します。そうしないと2位以降が表示されなくなります。
121
153
  if num == 5 || num > ken_count.length - 1 then
154
+ #15:loopを抜ける処理を書いています。このloopはnum==5(numは0から始まっているので順位では6位)
155
+ # になるか、numがken_countの要素の数を超える(県名が5よりも少なかった場合用)と終了します。
122
156
  break
123
157
  end
124
158
  }
125
159
 
126
- man = []
160
+ man = [] #16:男性を入れておく配列を作ります。
127
- woman = []
161
+ woman = [] #17:女性を入れておく配列を作ります。
128
162
  years.each do |date|
163
+ #18:氏名、生年月日、性別が入ったyearsの要素(例[[氏名1, xxxx/xx/xx, 男], [氏名2, xxxx/xx/xx, 女]]を
164
+ # 順番にdateに入れます。
129
- if date[2] == "男" then
165
+ if date[2] == "男" then #19:dateの3番目(配列の要素は0から数える)の要素が男なら
130
- man << date
166
+ man << date #20:manにdateを入れます
131
- elsif date[2] == "女" then
167
+ elsif date[2] == "女" then #21:dateの3番目(配列の要素は0から数える)の要素が女なら
132
- woman << date
168
+ woman << date #20:womanにdateを入れます
133
169
  end
134
170
  end
135
- puts "-------------------------------------------"
171
+ puts "-------------------------------------------" #21:少しでも見やすくなるように[1]で出した県名と人数ランキングの下に線を引きます。
136
- if man[0] != nil then
172
+ if man[0] != nil then #22:manの中身が空かどうかで処理を分けます。
137
173
  puts "男性:" + man[0][1] + man[0][0]
174
+ #23:空ではない場合は、男性か女性か分かりやすいように性別を表示することにして
175
+ # manの先頭の要素(配列)の2番目の要素(氏名)とmanの先頭の要素(配列)
176
+ # の1番目の要素(生年月日)を表示します。
138
177
  else
139
178
  puts "男性:該当者なし"
179
+ #24:空の場合は分かりやすいように"男性:該当者なし"と表示することにします。
140
180
  end
141
- if woman[0] != nil then
181
+ if woman[0] != nil then #25:manの中身が空かどうかで処理を分けます。
142
182
  puts "女性:" + woman[0][1] + woman[0][0]
183
+ #26:空ではない場合は、男性か女性か分かりやすいように性別を表示することにして
184
+ # womanの先頭の要素(配列)の2番目の要素(氏名)とwomanの先頭の要素(配列)
185
+ # の1番目の要素(生年月日)を表示します。
143
186
  else
144
187
  puts "女性:該当者なし"
188
+ #27:空の場合は分かりやすいように"女性:該当者なし"と表示することにします。
145
189
  end
146
- ```
190
+ ```

6

修正

2017/01/06 20:15

投稿

退会済みユーザー
answer CHANGED
@@ -51,6 +51,7 @@
51
51
  もしかしなくても意図した動きをしない可能性があります。
52
52
  同じ人数になった場合はどれか一つしか表示されません。
53
53
  2017/01/06追記
54
+ 2017/01/07追記
54
55
  ```Ruby
55
56
  #encoding : utf-8
56
57
  f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
@@ -93,4 +94,53 @@
93
94
  puts man[0]
94
95
  puts woman[0]
95
96
  ```
96
- 同じ人数でも表示されるようになりました。
97
+ 同じ人数でも表示されるようになりました。
98
+
99
+ ```Ruby
100
+ #encoding : utf-8
101
+ f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
102
+ ken = []
103
+ years = []
104
+ f.each do |element|
105
+ ken << element[5]
106
+ years << [element[10], element[0], element[2]]
107
+ end
108
+
109
+ ken_list = ken.uniq
110
+ ken_count = []
111
+ ken_list.each do |e|
112
+ ken_count << [ken.count(e), e]
113
+ end
114
+ ken_count.sort!.reverse!
115
+ years.sort!
116
+ num = 0
117
+ loop{
118
+ rank = num + 1
119
+ puts rank.to_s + "\s" + ken_count[num][1] + ken_count[num][0].to_s + "人"
120
+ num += 1
121
+ if num == 5 || num > ken_count.length - 1 then
122
+ break
123
+ end
124
+ }
125
+
126
+ man = []
127
+ woman = []
128
+ years.each do |date|
129
+ if date[2] == "男" then
130
+ man << date
131
+ elsif date[2] == "女" then
132
+ woman << date
133
+ end
134
+ end
135
+ puts "-------------------------------------------"
136
+ if man[0] != nil then
137
+ puts "男性:" + man[0][1] + man[0][0]
138
+ else
139
+ puts "男性:該当者なし"
140
+ end
141
+ if woman[0] != nil then
142
+ puts "女性:" + woman[0][1] + woman[0][0]
143
+ else
144
+ puts "女性:該当者なし"
145
+ end
146
+ ```

5

補足

2017/01/06 19:24

投稿

退会済みユーザー
answer CHANGED
@@ -49,4 +49,48 @@
49
49
  全く詳しくないですが考えてみました。
50
50
  私はデータを持っていないので質問の最初に書いてある例を参考にして作りました。
51
51
  もしかしなくても意図した動きをしない可能性があります。
52
- 同じ人数になった場合はどれか一つしか表示されません。
52
+ 同じ人数になった場合はどれか一つしか表示されません。
53
+ 2017/01/06追記
54
+ ```Ruby
55
+ #encoding : utf-8
56
+ f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
57
+ ken = []
58
+ years = []
59
+ f.each do |element|
60
+ ken << element[5]
61
+ years << element[10]
62
+ end
63
+
64
+ ken_list = ken.uniq
65
+ ken_count = []
66
+ ken_list.each do |e|
67
+ ken_count << [ken.count(e), e]
68
+ end
69
+ ken_count.sort!.reverse!
70
+
71
+ num = 0
72
+ loop{
73
+ rank = num + 1
74
+ puts rank.to_s + ken_count[num][1] + ken_count[num][0].to_s + "人"
75
+ num += 1
76
+ if num == 5 || num > ken_count.length - 1 then
77
+ break
78
+ end
79
+ }
80
+ years_sort = years.sort
81
+ man = []
82
+ woman = []
83
+ years_sort.each do |y|
84
+ name = f[years.index(y)][0]
85
+ year = f[years.index(y)][10]
86
+ sex = f[years.index(y)][2]
87
+ if sex == "男" then
88
+ man << [name + year + sex]
89
+ elsif sex == "女" then
90
+ woman << [name + year + sex]
91
+ end
92
+ end
93
+ puts man[0]
94
+ puts woman[0]
95
+ ```
96
+ 同じ人数でも表示されるようになりました。

4

修正

2017/01/06 11:50

投稿

退会済みユーザー
answer CHANGED
@@ -49,4 +49,4 @@
49
49
  全く詳しくないですが考えてみました。
50
50
  私はデータを持っていないので質問の最初に書いてある例を参考にして作りました。
51
51
  もしかしなくても意図した動きをしない可能性があります。
52
- 同じ人数になった場合などではどれか一つしか表示されないという欠陥があり
52
+ 同じ人数になった場合はどれか一つしか表示されません

3

補足

2017/01/06 10:33

投稿

退会済みユーザー
answer CHANGED
@@ -48,4 +48,5 @@
48
48
  ```
49
49
  全く詳しくないですが考えてみました。
50
50
  私はデータを持っていないので質問の最初に書いてある例を参考にして作りました。
51
- もしかしなくても意図した動きをしない可能性があります。
51
+ もしかしなくても意図した動きをしない可能性があります。
52
+ 同じ人数になった場合などではどれか一つしか表示されないという欠陥があります。

2

修正

2017/01/06 10:32

投稿

退会済みユーザー
answer CHANGED
@@ -17,7 +17,7 @@
17
17
  end
18
18
 
19
19
  ken_sort
20
- ken_sort_new = ken_sort.sort
20
+ ken_sort_new = ken_sort.sort.reverse
21
21
 
22
22
  rank = 0
23
23
  loop{

1

修正

2017/01/06 10:28

投稿

退会済みユーザー
answer CHANGED
@@ -26,7 +26,7 @@
26
26
  num = ken_count[ken_sort.index(ee)][1]
27
27
  puts "#{rank + 1}\s#{name + num.to_s}\s人"
28
28
  rank += 1
29
- if rank == 6 || rank > ken_list.length - 1 then
29
+ if rank == 5 || rank > ken_list.length - 1 then
30
30
  break
31
31
  end
32
32
  }