Вопрос для новичков:Разделить вектор на максимальное значение в Clojure - лучший способ?
Как разбить вектор чисел на и в том числе первый экземпляр максимального значения в нем?
Итак, из этого [1 2 3 4 5 4 3 2 1]
, получите [1 2 3 4 5] [4 3 2 1]
.
То, как я делаю это кажется слишком сложным:
(def up5 [1 2 3 4 5 4 3 2 1])
(split-at (inc (.indexOf up5 (apply max up5))) up5) ; => [1 2 3 4 5] [4 3 2 1]
Значит ли это, кажется, немного неудобно? Например, с использованием заданного вектора три раза. Нужно ли нам использовать Java для получения индекса?
Что было бы лучше, более идиоматичным или более совершенным?
Спасибо.
Более результативным было бы с 'reduce-kv', чтобы избежать вызова' .indexOf'. Но это даже дольше, чем ваша версия. – ClojureMostly
Является ли вход всегда вектором? Требуется ли вам результат seq/vector/whatever? – Davyzhu
Я не думаю, что это будет иметь значение. Во всяком случае, я не использую этот код для каких-либо целей, кроме как пытаться улучшить ... –