Я искал / гуглил, но борюсь со следующей проблемой.
Я создаю приложение Rails 2.3.2, и одним из требований является вычисление медианы массива результатов. Я использую код для вычисления медианы из Ruby Cookbook, но продолжаю сталкиваться с проблемой получения ошибки «LocalJumpError - блок не указан», когда я пытаюсь найти медиану массива с нечетным числом членов. 1003 *
Пример кода на мой взгляд выглядит следующим образом:
<%= survey_response.median([6,4,5,4,4,2]) %>
Тогда в модели survey_response.rb используются следующие методы:
def mean(array)
array.inject(array.inject(0) { |sum, x| sum += x } / array.size.to_f)
end
def median(array,already_sorted=false)
return nil if array.empty?
array = array.sort unless already_sorted
m_pos = array.size / 2
return array.size % 2 == 1 ? array[m_pos] : mean(array[m_pos-1..m_pos])
end
Ошибка возникает, когда медианный метод обращается к среднему методу, чтобы получить носитель с нечетным количеством элементов в массиве. Я просто не могу понять, почему я получаю эту ошибку или, на самом деле, как ее исправить - так что я был бы очень признателен за любую помощь / руководство / смех, который кто-либо мог предложить мне!
Спасибо
Simon