В Ruby, каков самый чистый способ получить индекс самого большого значения в массиве?

Если a массив, я хочу a.index(a.max), но что-то более подобное Рубину. Это должно быть очевидно, но я испытываю затруднения при нахождении ответа в так и в другом месте. Очевидно, я плохо знаком с Ruby.

52
задан Cary Swoveland 18 July 2015 в 21:44
поделиться

2 ответа

Для Ruby 1.8,7 или выше:

a.each_with_index.max[1]

Это делает одну итерацию. Не совсем самая семантическая вещь когда-либо, но если вы начнете это много делать, я бы обернул его в методе INDEX_OF_MAX .

109
ответ дан 7 November 2019 в 09:07
поделиться

В дополнение к другим командам, все слова будут заключены в строку в двойных кавычках (согласно вашему комментарию)

:s/\(\S\+\)/"\1"/

или, если вы хотите уменьшить количество обратных косых черт, вы можете поместить \v (очень волшебный) модификатор в начале образца

:s/\v(\S+)/"\1"/
-121--637812-

для Ruby 1,8,7 или выше:

a.each_with_index.max[1]

Не совсем самая смысловая вещь в истории, но если вы найдете себя сделать это много, я бы обернуть его в индекс _ _ max метод в любом случае.

-121--1048119-
a = [1, 4 8]
a.inject(a[0]) {|max, item| item > max ? item : max }

По крайней мере это Ruby-like:)

2
ответ дан 7 November 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: