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

回答編集履歴

2

追記

2020/01/08 14:20

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  と繰り返して、最後の sum + 5 -> sum
12
12
  のsumの値が返されます
13
13
 
14
- 追記
14
+ 追記:わからないという行を1行まちがえてました
15
15
  豆まきというのが何をしたい題材なのかわからないのですが、そのcodeは
16
16
  while lines = gets が終わったところで line には例えば
17
17
  [[1, 2, 3, 4], [5, 6, 7, 8], [2, 5, 6]] が入ります。

1

追記

2020/01/08 14:20

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -11,4 +11,38 @@
11
11
  と繰り返して、最後の sum + 5 -> sum
12
12
  のsumの値が返されます
13
13
 
14
+ 追記
15
+ 豆まきというのが何をしたい題材なのかわからないのですが、そのcodeは
16
+ while lines = gets が終わったところで line には例えば
17
+ [[1, 2, 3, 4], [5, 6, 7, 8], [2, 5, 6]] が入ります。
18
+
19
+ line = line.compact.inject(:+)
20
+ のinjectは配列の + になりますね。
21
+ ですので結果は
22
+ [1, 2, 3, 4, 5, 6, 7, 8, 2, 5, 6]
23
+ となります。
24
+
25
+ puts line.map{|l| line.sort.reverse.index(l) + 1}
26
+ の line.sort.reverse は 
27
+ [8, 7, 6, 6, 5, 5, 4, 3, 2, 2, 1]
28
+ です
29
+ line.map{|l| の l は 1, 2, 3, 4, 5, 6, 7, 8, 2, 5, 6 の順に出てきます
30
+ から
31
+ 最初の 1 の時は [8, 7, 6, 6, 5, 5, 4, 3, 2, 2, 1].index(1) で 10 です
32
+ 次の  2 の時は [8, 7, 6, 6, 5, 5, 4, 3, 2, 2, 1].index(2) で 8 です
33
+ ということで、+1 がない場合は
34
+ 10, 8, 7, 6, 4, 2, 1, 0, 8, 4, 2
35
+ +1 があるので
36
+ 11, 9, 8, 7, 5, 3, 2, 1, 9, 5, 3
37
+ の順に出力されます
38
+ なお、
39
+ line.map の結果は配列の
40
+ [11, 9, 8, 7, 5, 3, 2, 1, 9, 5, 3]
41
+ ですが、配列を puts すると、要素毎に開業されるので
42
+ 11
43
+ 9
44
+ 8
45
+ 7
14
- .
46
+ .
47
+ .
48
+ となります