Как использовать метод Enumerable .map для Ruby, чтобы сделать что-то похожее на карту в Stack Overflow

map(-30, -89.75, 89.75, 0, 360)

Я ищу что-то вроде этого, где:

  • -30 является входным значением.
  • -От 89,75 до 89,75 — диапазон возможных входных значений
  • 0 — 360 — это последний диапазон, который будет отображаться

Мне сказали, что есть способ сделать это, используя http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-map

.. однако это не всегда очевидно!

0

Решение

Если я правильно понимаю, я думаю, что вы просто хотите равномерно отобразить один диапазон на другой. Итак, нам просто нужно вычислить, как далеко он проходит через входной диапазон, и вернуть эту долю выходного диапазона.

def map_range(input, in_low, in_high, out_low, out_high)
# map onto [0,1] using input range
frac = (input - in_low) / (in_high-in_low)
# map onto output range
frac * (out_high-out_low) + out_low
end

Кроме того, я должен отметить, что карта имеет немного другое значение в ruby, и более подходящее описание, вероятно, будет преобразование.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]