回答編集履歴
3
間違っていたので修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
```Ruby
|
2
|
-
ha1.zip(ha2, ha1.size.times).max[2]
|
2
|
+
ha1.zip(ha2.map(&:-@), ha1.size.times).max[2]
|
3
3
|
```
|
4
4
|
|
5
5
|
これでどうでしょう。
|
@@ -8,5 +8,5 @@
|
|
8
8
|
普通のindexはインデックスが小さい方をとるので、そうしたければ↓のようになります。
|
9
9
|
|
10
10
|
```Ruby
|
11
|
-
ha1.size - ha1.zip(ha2, ha1.size.downto(1)).max[2]
|
11
|
+
ha1.size - ha1.zip(ha2.map(&:-@), ha1.size.downto(1)).max[2]
|
12
12
|
```
|
2
修正しました
answer
CHANGED
@@ -1,2 +1,12 @@
|
|
1
|
-
修正中です
|
2
|
-
|
1
|
+
```Ruby
|
2
|
+
ha1.zip(ha2, ha1.size.times).max[2]
|
3
|
+
```
|
4
|
+
|
5
|
+
これでどうでしょう。
|
6
|
+
`ha1.zip(ha2, ha1.size.times)`は`[[ha1[0], ha2[0], 0], [ha1[1], ha2[1], 1], ...]`というような配列を生成しています。
|
7
|
+
それをmaxすると、`Array#<=>`は要素を前から順に比較していく(辞書式)ので、ha1を優先し、ha1が同じならha2を比較し、それが同じならインデックスが大きい方をとる、というふうにしています。
|
8
|
+
普通のindexはインデックスが小さい方をとるので、そうしたければ↓のようになります。
|
9
|
+
|
10
|
+
```Ruby
|
11
|
+
ha1.size - ha1.zip(ha2, ha1.size.downto(1)).max[2]
|
12
|
+
```
|
1
質問文を読み間違えました
answer
CHANGED
@@ -1,10 +1,2 @@
|
|
1
|
+
修正中です
|
1
|
-
|
2
|
+
------
|
2
|
-
max = ha1.max
|
3
|
-
tmp = ha1.size.times.filter { |j| ha1[j] == max }
|
4
|
-
```
|
5
|
-
|
6
|
-
こういうのでどうでしょうか。大量のデータを扱うのでなければ↓でもいいでしょう。
|
7
|
-
|
8
|
-
```Ruby
|
9
|
-
tmp = ha1.size.times.filter { |j| ha1[j] == ha1.max }
|
10
|
-
```
|