回答編集履歴
15
修正
test
CHANGED
@@ -535,3 +535,9 @@
|
|
535
535
|
島根県21人
|
536
536
|
|
537
537
|
```
|
538
|
+
|
539
|
+
###補足について
|
540
|
+
|
541
|
+
もしかしたらこちらの記事が参考になるかもしれません。
|
542
|
+
|
543
|
+
[Ruby文字エンコードに悩まされ、直接指定やnkfによる推測などを試した](http://qiita.com/rojiuratech/items/9d40cb294eb08f2204ac)
|
14
補足
test
CHANGED
@@ -108,6 +108,8 @@
|
|
108
108
|
|
109
109
|
2017/01/07追記
|
110
110
|
|
111
|
+
2017/01/09追記
|
112
|
+
|
111
113
|
```Ruby
|
112
114
|
|
113
115
|
#encoding : utf-8
|
@@ -427,3 +429,109 @@
|
|
427
429
|
f.map!{|k| k[4]}.uniq.map{|e|[f.count(e), e]}.sort!.reverse!.map{|word| puts word[1] + word[0].to_s + "人"}
|
428
430
|
|
429
431
|
```
|
432
|
+
|
433
|
+
```
|
434
|
+
|
435
|
+
実行結果例
|
436
|
+
|
437
|
+
中沢 由宇2016/1/10女
|
438
|
+
|
439
|
+
上山 勤2016/1/10男
|
440
|
+
|
441
|
+
---------------------------------------
|
442
|
+
|
443
|
+
東京都480人
|
444
|
+
|
445
|
+
大阪府369人
|
446
|
+
|
447
|
+
神奈川県318人
|
448
|
+
|
449
|
+
愛知県295人
|
450
|
+
|
451
|
+
埼玉県281人
|
452
|
+
|
453
|
+
北海道239人
|
454
|
+
|
455
|
+
千葉県227人
|
456
|
+
|
457
|
+
福岡県208人
|
458
|
+
|
459
|
+
兵庫県184人
|
460
|
+
|
461
|
+
静岡県146人
|
462
|
+
|
463
|
+
広島県124人
|
464
|
+
|
465
|
+
長野県104人
|
466
|
+
|
467
|
+
京都府104人
|
468
|
+
|
469
|
+
宮城県98人
|
470
|
+
|
471
|
+
岐阜県95人
|
472
|
+
|
473
|
+
茨城県94人
|
474
|
+
|
475
|
+
群馬県90人
|
476
|
+
|
477
|
+
栃木県84人
|
478
|
+
|
479
|
+
新潟県83人
|
480
|
+
|
481
|
+
福島県80人
|
482
|
+
|
483
|
+
鹿児島県74人
|
484
|
+
|
485
|
+
三重県71人
|
486
|
+
|
487
|
+
岩手県70人
|
488
|
+
|
489
|
+
熊本県69人
|
490
|
+
|
491
|
+
岡山県69人
|
492
|
+
|
493
|
+
石川県62人
|
494
|
+
|
495
|
+
愛媛県61人
|
496
|
+
|
497
|
+
長崎県56人
|
498
|
+
|
499
|
+
滋賀県56人
|
500
|
+
|
501
|
+
山口県53人
|
502
|
+
|
503
|
+
沖縄県52人
|
504
|
+
|
505
|
+
大分県52人
|
506
|
+
|
507
|
+
奈良県50人
|
508
|
+
|
509
|
+
和歌山県48人
|
510
|
+
|
511
|
+
青森県47人
|
512
|
+
|
513
|
+
秋田県47人
|
514
|
+
|
515
|
+
高知県39人
|
516
|
+
|
517
|
+
佐賀県39人
|
518
|
+
|
519
|
+
香川県38人
|
520
|
+
|
521
|
+
山形県38人
|
522
|
+
|
523
|
+
山梨県36人
|
524
|
+
|
525
|
+
徳島県33人
|
526
|
+
|
527
|
+
宮崎県33人
|
528
|
+
|
529
|
+
富山県32人
|
530
|
+
|
531
|
+
福井県27人
|
532
|
+
|
533
|
+
鳥取県24人
|
534
|
+
|
535
|
+
島根県21人
|
536
|
+
|
537
|
+
```
|
13
修正
test
CHANGED
@@ -210,7 +210,7 @@
|
|
210
210
|
|
211
211
|
=end
|
212
212
|
|
213
|
-
f = File.read("ファイル名").encode("UTF-8").split("\n").map{|e| e.split("\,")}
|
213
|
+
f = File.read("ファイル名.csv").encode("UTF-8").split("\n").map{|e| e.split("\,")}
|
214
214
|
|
215
215
|
=begin
|
216
216
|
|
@@ -230,9 +230,9 @@
|
|
230
230
|
|
231
231
|
f.each do |element|
|
232
232
|
|
233
|
-
ken << element[
|
233
|
+
ken << element[4]
|
234
|
-
|
234
|
+
|
235
|
-
years << [element[
|
235
|
+
years << [element[3], element[0], element[2]]
|
236
236
|
|
237
237
|
end
|
238
238
|
|
@@ -296,13 +296,11 @@
|
|
296
296
|
|
297
297
|
#13:rank.to_sでrankを文字にします。そうしないと文字と+できません。初めにファイルをUTF-8にエンコード
|
298
298
|
|
299
|
-
# しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にした
|
299
|
+
# しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にしたrankの後ろに
|
300
|
-
|
300
|
+
|
301
|
-
#
|
301
|
+
# スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の1番目の要素=県名と
|
302
|
-
|
303
|
-
|
302
|
+
|
304
|
-
|
305
|
-
# の
|
303
|
+
# ken_count(配列)のnum番目にある要素(配列)の0番目の要素=人数を文字にしたものを足しています。
|
306
304
|
|
307
305
|
num += 1 #14:numに1を足します。そうしないと2位以降が表示されなくなります。
|
308
306
|
|
@@ -362,7 +360,7 @@
|
|
362
360
|
|
363
361
|
end
|
364
362
|
|
365
|
-
if woman[0] != nil then #25:
|
363
|
+
if woman[0] != nil then #25:manの中身が空かどうかで処理を分けます。
|
366
364
|
|
367
365
|
puts "女性:" + woman[0][1] + woman[0][0]
|
368
366
|
|
@@ -382,6 +380,28 @@
|
|
382
380
|
|
383
381
|
```
|
384
382
|
|
383
|
+
```
|
384
|
+
|
385
|
+
実行結果例
|
386
|
+
|
387
|
+
1 東京都480人
|
388
|
+
|
389
|
+
2 大阪府369人
|
390
|
+
|
391
|
+
3 神奈川県318人
|
392
|
+
|
393
|
+
4 愛知県295人
|
394
|
+
|
395
|
+
5 埼玉県281人
|
396
|
+
|
397
|
+
-------------------------------------------
|
398
|
+
|
399
|
+
男性:上山 勤2016/1/10
|
400
|
+
|
401
|
+
女性:中沢 由宇2016/1/10
|
402
|
+
|
403
|
+
```
|
404
|
+
|
385
405
|
ランキング機能を無くしてみました。
|
386
406
|
|
387
407
|
katoy様が紹介してくださった「なんちゃって個人情報」を使ってデータを作ってみました。
|
12
補足
test
CHANGED
@@ -106,6 +106,8 @@
|
|
106
106
|
|
107
107
|
2017/01/07追記
|
108
108
|
|
109
|
+
2017/01/07追記
|
110
|
+
|
109
111
|
```Ruby
|
110
112
|
|
111
113
|
#encoding : utf-8
|
@@ -379,3 +381,29 @@
|
|
379
381
|
end
|
380
382
|
|
381
383
|
```
|
384
|
+
|
385
|
+
ランキング機能を無くしてみました。
|
386
|
+
|
387
|
+
katoy様が紹介してくださった「なんちゃって個人情報」を使ってデータを作ってみました。
|
388
|
+
|
389
|
+
データの内容は「名前、ふりがな、性別、誕生日、都道府県、電話番号」です。
|
390
|
+
|
391
|
+
正確に動いているかどうかは分かりません。
|
392
|
+
|
393
|
+
```Ruby
|
394
|
+
|
395
|
+
#encoding : utf-8
|
396
|
+
|
397
|
+
f = File.read("データ2.txt").encode("UTF-8").split("\n").map{|e| e.split("\,")}
|
398
|
+
|
399
|
+
f.shift
|
400
|
+
|
401
|
+
puts f.map{|y| [y[3], y[0], y[2]]}.sort.select{|g| g[2] == "女"}.map{|word| word[1] + word[0] + word[2]}[0]
|
402
|
+
|
403
|
+
puts f.map{|y| [y[3], y[0], y[2]]}.sort.select{|g| g[2] == "男"}.map{|word| word[1] + word[0] + word[2]}[0]
|
404
|
+
|
405
|
+
puts "---------------------------------------"
|
406
|
+
|
407
|
+
f.map!{|k| k[4]}.uniq.map{|e|[f.count(e), e]}.sort!.reverse!.map{|word| puts word[1] + word[0].to_s + "人"}
|
408
|
+
|
409
|
+
```
|
11
修正
test
CHANGED
@@ -294,11 +294,13 @@
|
|
294
294
|
|
295
295
|
#13:rank.to_sでrankを文字にします。そうしないと文字と+できません。初めにファイルをUTF-8にエンコード
|
296
296
|
|
297
|
-
# しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にした
|
297
|
+
# しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にした
|
298
|
-
|
298
|
+
|
299
|
-
# スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の
|
299
|
+
# rankの後ろにスペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の
|
300
|
+
|
300
|
-
|
301
|
+
# 2番目(配列の要素は0から数える)の要素=県名とken_count(配列)のnum番目にある要素(配列)
|
302
|
+
|
301
|
-
#
|
303
|
+
# の1番目の要素=人数を文字にしたものを足しています。
|
302
304
|
|
303
305
|
num += 1 #14:numに1を足します。そうしないと2位以降が表示されなくなります。
|
304
306
|
|
10
補足
test
CHANGED
@@ -296,9 +296,9 @@
|
|
296
296
|
|
297
297
|
# しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にしたrankの後ろに
|
298
298
|
|
299
|
-
# スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の
|
299
|
+
# スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の2番目の要素=県名と
|
300
|
-
|
300
|
+
|
301
|
-
# ken_count(配列)のnum番目にある要素(配列)の
|
301
|
+
# ken_count(配列)のnum番目にある要素(配列)の1番目の要素=人数を文字にしたものを足しています。
|
302
302
|
|
303
303
|
num += 1 #14:numに1を足します。そうしないと2位以降が表示されなくなります。
|
304
304
|
|
9
修正
test
CHANGED
@@ -208,7 +208,7 @@
|
|
208
208
|
|
209
209
|
=end
|
210
210
|
|
211
|
-
f = File.read("ファイル名").encode("UTF-8").split("\n").map
|
211
|
+
f = File.read("ファイル名").encode("UTF-8").split("\n").map{|e| e.split("\,")}
|
212
212
|
|
213
213
|
=begin
|
214
214
|
|
8
修正
test
CHANGED
@@ -358,7 +358,7 @@
|
|
358
358
|
|
359
359
|
end
|
360
360
|
|
361
|
-
if woman[0] != nil then #25:manの中身が空かどうかで処理を分けます。
|
361
|
+
if woman[0] != nil then #25:womanの中身が空かどうかで処理を分けます。
|
362
362
|
|
363
363
|
puts "女性:" + woman[0][1] + woman[0][0]
|
364
364
|
|
7
修正
test
CHANGED
@@ -198,11 +198,33 @@
|
|
198
198
|
|
199
199
|
#encoding : utf-8
|
200
200
|
|
201
|
+
=begin
|
202
|
+
|
203
|
+
[1]について、私は単純にそれぞれの県の人数を数えて人数の多い順に並び替えることにしました。
|
204
|
+
|
205
|
+
[2]については、生年月日順に氏名を並び替えたのち、男女で分けて男の先頭と女の先頭を
|
206
|
+
|
207
|
+
表示することにしました。
|
208
|
+
|
209
|
+
=end
|
210
|
+
|
201
211
|
f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
|
202
212
|
|
213
|
+
=begin
|
214
|
+
|
215
|
+
#1:データの入ったメモ帳を読み込みます。手を加えやすいようにUTF-8にエンコードします。
|
216
|
+
|
217
|
+
このファイルは1行で一つのまとまりになっているのでいったん改行で分割<split("\n")>
|
218
|
+
|
219
|
+
します。このままだと1行がすべてくっついているので、くっついている1行を対象にカンマで分割
|
220
|
+
|
221
|
+
<split("\,")>します。
|
222
|
+
|
203
|
-
|
223
|
+
=end
|
204
|
-
|
224
|
+
|
205
|
-
|
225
|
+
ken = [] #2:県名を入れる配列を作ります。
|
226
|
+
|
227
|
+
years = [] #3:氏名、生年月日、性別だけを1つにまとめた情報を入れる配列を作ります。
|
206
228
|
|
207
229
|
f.each do |element|
|
208
230
|
|
@@ -212,34 +234,80 @@
|
|
212
234
|
|
213
235
|
end
|
214
236
|
|
215
|
-
|
216
|
-
|
217
|
-
|
237
|
+
=begin
|
218
|
-
|
238
|
+
|
219
|
-
|
239
|
+
#4:f(最初に読み込んだファイル)の中身(例:[佐藤 太郎,サトウ タロウ,男,,887-4155,宮城県,xx市,xx,3-50-5,xxマンション307,1982/06/09,O ]を
|
220
|
-
|
240
|
+
|
221
|
-
|
241
|
+
順番にelementに入れて処理を行います。
|
242
|
+
|
243
|
+
処理の内容は2つあって、1つは県名をとってkenに入れるもの、もう1つは生年月日、氏名、性別をとってyearsに入れるものです。
|
244
|
+
|
245
|
+
=end
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
ken_list = ken.uniq #5:#4によって今、kenには県名が入っています。このkenから重複した県名を削除した新しい配列ken_listを作ります。
|
250
|
+
|
251
|
+
ken_count = [] #6:数えた県名の数(=その県名が含まれたデータの数)を入れておく配列を作ります。
|
252
|
+
|
253
|
+
ken_list.each do |e| #7:ken_listの中身(例:[沖縄県, 宮城県, 広島県])を順番にeに入れます。
|
222
254
|
|
223
255
|
ken_count << [ken.count(e), e]
|
224
256
|
|
225
257
|
end
|
226
258
|
|
259
|
+
=begin
|
260
|
+
|
261
|
+
#8:重複ありで県名が入っているkenを対象にe(個別の県名)の個数を調べます。その個数とe(個別の県名)を
|
262
|
+
|
263
|
+
ken_countに入れます。
|
264
|
+
|
265
|
+
=end
|
266
|
+
|
227
267
|
ken_count.sort!.reverse!
|
228
268
|
|
269
|
+
=begin
|
270
|
+
|
271
|
+
#9:ken_countをsortします。sortをすると数字の小さい順に並べ替えられます。
|
272
|
+
|
273
|
+
並び替えられた結果をreverseすることで数字を大きい順に並び替えることができます。
|
274
|
+
|
275
|
+
=end
|
276
|
+
|
229
277
|
years.sort!
|
230
278
|
|
231
|
-
n
|
279
|
+
=begin
|
280
|
+
|
281
|
+
#10:ついでに氏名、生年月日、性別が入っているyearsもsortをします。
|
282
|
+
|
283
|
+
こちらは生年月日の古い順(=数字が小さい順)なのでsortだけで大丈夫です。
|
284
|
+
|
285
|
+
=end
|
286
|
+
|
287
|
+
num = 0 #11:県名と人数を数字の大きい順に5つ表示します。表示にはloopを使います。
|
232
288
|
|
233
289
|
loop{
|
234
290
|
|
235
|
-
rank = num + 1
|
291
|
+
rank = num + 1 #12:順位に使う数字です。numは0から始まるので1を足さないと順位が1位からになりません。
|
236
292
|
|
237
293
|
puts rank.to_s + "\s" + ken_count[num][1] + ken_count[num][0].to_s + "人"
|
238
294
|
|
295
|
+
#13:rank.to_sでrankを文字にします。そうしないと文字と+できません。初めにファイルをUTF-8にエンコード
|
296
|
+
|
297
|
+
# しておかないとこの辺でエラーが出ると思います。画面に表示したときに見やすいように、文字にしたrankの後ろに
|
298
|
+
|
299
|
+
# スペースを入れます。その次にken_count(配列)のnum番目にある要素(配列)の1番目の要素=県名と
|
300
|
+
|
301
|
+
# ken_count(配列)のnum番目にある要素(配列)の0番目の要素=人数を文字にしたものを足しています。
|
302
|
+
|
239
|
-
num += 1
|
303
|
+
num += 1 #14:numに1を足します。そうしないと2位以降が表示されなくなります。
|
240
304
|
|
241
305
|
if num == 5 || num > ken_count.length - 1 then
|
242
306
|
|
307
|
+
#15:loopを抜ける処理を書いています。このloopはnum==5(numは0から始まっているので順位では6位)
|
308
|
+
|
309
|
+
# になるか、numがken_countの要素の数を超える(県名が5よりも少なかった場合用)と終了します。
|
310
|
+
|
243
311
|
break
|
244
312
|
|
245
313
|
end
|
@@ -248,46 +316,64 @@
|
|
248
316
|
|
249
317
|
|
250
318
|
|
251
|
-
man = []
|
319
|
+
man = [] #16:男性を入れておく配列を作ります。
|
252
|
-
|
320
|
+
|
253
|
-
woman = []
|
321
|
+
woman = [] #17:女性を入れておく配列を作ります。
|
254
322
|
|
255
323
|
years.each do |date|
|
256
324
|
|
325
|
+
#18:氏名、生年月日、性別が入ったyearsの要素(例[[氏名1, xxxx/xx/xx, 男], [氏名2, xxxx/xx/xx, 女]]を
|
326
|
+
|
327
|
+
# 順番にdateに入れます。
|
328
|
+
|
257
|
-
if date[2] == "男" then
|
329
|
+
if date[2] == "男" then #19:dateの3番目(配列の要素は0から数える)の要素が男なら
|
258
|
-
|
330
|
+
|
259
|
-
man << date
|
331
|
+
man << date #20:manにdateを入れます
|
260
|
-
|
332
|
+
|
261
|
-
elsif date[2] == "女" then
|
333
|
+
elsif date[2] == "女" then #21:dateの3番目(配列の要素は0から数える)の要素が女なら
|
262
|
-
|
334
|
+
|
263
|
-
woman << date
|
335
|
+
woman << date #20:womanにdateを入れます
|
264
|
-
|
336
|
+
|
265
|
-
end
|
337
|
+
end
|
266
|
-
|
338
|
+
|
267
|
-
end
|
339
|
+
end
|
268
|
-
|
340
|
+
|
269
|
-
puts "-------------------------------------------"
|
341
|
+
puts "-------------------------------------------" #21:少しでも見やすくなるように[1]で出した県名と人数ランキングの下に線を引きます。
|
270
|
-
|
342
|
+
|
271
|
-
if man[0] != nil then
|
343
|
+
if man[0] != nil then #22:manの中身が空かどうかで処理を分けます。
|
272
344
|
|
273
345
|
puts "男性:" + man[0][1] + man[0][0]
|
274
346
|
|
347
|
+
#23:空ではない場合は、男性か女性か分かりやすいように性別を表示することにして
|
348
|
+
|
349
|
+
# manの先頭の要素(配列)の2番目の要素(氏名)とmanの先頭の要素(配列)
|
350
|
+
|
351
|
+
# の1番目の要素(生年月日)を表示します。
|
352
|
+
|
275
353
|
else
|
276
354
|
|
277
355
|
puts "男性:該当者なし"
|
278
356
|
|
357
|
+
#24:空の場合は分かりやすいように"男性:該当者なし"と表示することにします。
|
358
|
+
|
279
|
-
end
|
359
|
+
end
|
280
|
-
|
360
|
+
|
281
|
-
if woman[0] != nil then
|
361
|
+
if woman[0] != nil then #25:manの中身が空かどうかで処理を分けます。
|
282
362
|
|
283
363
|
puts "女性:" + woman[0][1] + woman[0][0]
|
284
364
|
|
365
|
+
#26:空ではない場合は、男性か女性か分かりやすいように性別を表示することにして
|
366
|
+
|
367
|
+
# womanの先頭の要素(配列)の2番目の要素(氏名)とwomanの先頭の要素(配列)
|
368
|
+
|
369
|
+
# の1番目の要素(生年月日)を表示します。
|
370
|
+
|
285
371
|
else
|
286
372
|
|
287
373
|
puts "女性:該当者なし"
|
288
374
|
|
375
|
+
#27:空の場合は分かりやすいように"女性:該当者なし"と表示することにします。
|
376
|
+
|
289
377
|
end
|
290
378
|
|
291
379
|
```
|
292
|
-
|
293
|
-
|
6
修正
test
CHANGED
@@ -104,6 +104,8 @@
|
|
104
104
|
|
105
105
|
2017/01/06追記
|
106
106
|
|
107
|
+
2017/01/07追記
|
108
|
+
|
107
109
|
```Ruby
|
108
110
|
|
109
111
|
#encoding : utf-8
|
@@ -189,3 +191,103 @@
|
|
189
191
|
```
|
190
192
|
|
191
193
|
同じ人数でも表示されるようになりました。
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
```Ruby
|
198
|
+
|
199
|
+
#encoding : utf-8
|
200
|
+
|
201
|
+
f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
|
202
|
+
|
203
|
+
ken = []
|
204
|
+
|
205
|
+
years = []
|
206
|
+
|
207
|
+
f.each do |element|
|
208
|
+
|
209
|
+
ken << element[5]
|
210
|
+
|
211
|
+
years << [element[10], element[0], element[2]]
|
212
|
+
|
213
|
+
end
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
ken_list = ken.uniq
|
218
|
+
|
219
|
+
ken_count = []
|
220
|
+
|
221
|
+
ken_list.each do |e|
|
222
|
+
|
223
|
+
ken_count << [ken.count(e), e]
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
ken_count.sort!.reverse!
|
228
|
+
|
229
|
+
years.sort!
|
230
|
+
|
231
|
+
num = 0
|
232
|
+
|
233
|
+
loop{
|
234
|
+
|
235
|
+
rank = num + 1
|
236
|
+
|
237
|
+
puts rank.to_s + "\s" + ken_count[num][1] + ken_count[num][0].to_s + "人"
|
238
|
+
|
239
|
+
num += 1
|
240
|
+
|
241
|
+
if num == 5 || num > ken_count.length - 1 then
|
242
|
+
|
243
|
+
break
|
244
|
+
|
245
|
+
end
|
246
|
+
|
247
|
+
}
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
man = []
|
252
|
+
|
253
|
+
woman = []
|
254
|
+
|
255
|
+
years.each do |date|
|
256
|
+
|
257
|
+
if date[2] == "男" then
|
258
|
+
|
259
|
+
man << date
|
260
|
+
|
261
|
+
elsif date[2] == "女" then
|
262
|
+
|
263
|
+
woman << date
|
264
|
+
|
265
|
+
end
|
266
|
+
|
267
|
+
end
|
268
|
+
|
269
|
+
puts "-------------------------------------------"
|
270
|
+
|
271
|
+
if man[0] != nil then
|
272
|
+
|
273
|
+
puts "男性:" + man[0][1] + man[0][0]
|
274
|
+
|
275
|
+
else
|
276
|
+
|
277
|
+
puts "男性:該当者なし"
|
278
|
+
|
279
|
+
end
|
280
|
+
|
281
|
+
if woman[0] != nil then
|
282
|
+
|
283
|
+
puts "女性:" + woman[0][1] + woman[0][0]
|
284
|
+
|
285
|
+
else
|
286
|
+
|
287
|
+
puts "女性:該当者なし"
|
288
|
+
|
289
|
+
end
|
290
|
+
|
291
|
+
```
|
292
|
+
|
293
|
+
|
5
補足
test
CHANGED
@@ -101,3 +101,91 @@
|
|
101
101
|
もしかしなくても意図した動きをしない可能性があります。
|
102
102
|
|
103
103
|
同じ人数になった場合はどれか一つしか表示されません。
|
104
|
+
|
105
|
+
2017/01/06追記
|
106
|
+
|
107
|
+
```Ruby
|
108
|
+
|
109
|
+
#encoding : utf-8
|
110
|
+
|
111
|
+
f = File.read("ファイル名").encode("UTF-8").split("\n").map!{|e| e.split("\,")}
|
112
|
+
|
113
|
+
ken = []
|
114
|
+
|
115
|
+
years = []
|
116
|
+
|
117
|
+
f.each do |element|
|
118
|
+
|
119
|
+
ken << element[5]
|
120
|
+
|
121
|
+
years << element[10]
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
ken_list = ken.uniq
|
128
|
+
|
129
|
+
ken_count = []
|
130
|
+
|
131
|
+
ken_list.each do |e|
|
132
|
+
|
133
|
+
ken_count << [ken.count(e), e]
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
ken_count.sort!.reverse!
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
num = 0
|
142
|
+
|
143
|
+
loop{
|
144
|
+
|
145
|
+
rank = num + 1
|
146
|
+
|
147
|
+
puts rank.to_s + ken_count[num][1] + ken_count[num][0].to_s + "人"
|
148
|
+
|
149
|
+
num += 1
|
150
|
+
|
151
|
+
if num == 5 || num > ken_count.length - 1 then
|
152
|
+
|
153
|
+
break
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
}
|
158
|
+
|
159
|
+
years_sort = years.sort
|
160
|
+
|
161
|
+
man = []
|
162
|
+
|
163
|
+
woman = []
|
164
|
+
|
165
|
+
years_sort.each do |y|
|
166
|
+
|
167
|
+
name = f[years.index(y)][0]
|
168
|
+
|
169
|
+
year = f[years.index(y)][10]
|
170
|
+
|
171
|
+
sex = f[years.index(y)][2]
|
172
|
+
|
173
|
+
if sex == "男" then
|
174
|
+
|
175
|
+
man << [name + year + sex]
|
176
|
+
|
177
|
+
elsif sex == "女" then
|
178
|
+
|
179
|
+
woman << [name + year + sex]
|
180
|
+
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
|
185
|
+
puts man[0]
|
186
|
+
|
187
|
+
puts woman[0]
|
188
|
+
|
189
|
+
```
|
190
|
+
|
191
|
+
同じ人数でも表示されるようになりました。
|
4
修正
test
CHANGED
@@ -100,4 +100,4 @@
|
|
100
100
|
|
101
101
|
もしかしなくても意図した動きをしない可能性があります。
|
102
102
|
|
103
|
-
同じ人数になった場合
|
103
|
+
同じ人数になった場合はどれか一つしか表示されません。
|
3
補足
test
CHANGED
@@ -99,3 +99,5 @@
|
|
99
99
|
私はデータを持っていないので質問の最初に書いてある例を参考にして作りました。
|
100
100
|
|
101
101
|
もしかしなくても意図した動きをしない可能性があります。
|
102
|
+
|
103
|
+
同じ人数になった場合などではどれか一つしか表示されないという欠陥があります。
|
2
修正
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
ken_sort
|
38
38
|
|
39
|
-
ken_sort_new = ken_sort.sort
|
39
|
+
ken_sort_new = ken_sort.sort.reverse
|
40
40
|
|
41
41
|
|
42
42
|
|
1
修正
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
rank += 1
|
56
56
|
|
57
|
-
if rank ==
|
57
|
+
if rank == 5 || rank > ken_list.length - 1 then
|
58
58
|
|
59
59
|
break
|
60
60
|
|