RosettaCodeData/Task/Map-range/00DESCRIPTION

21 lines
953 B
Plaintext

Given two [[wp:Interval (mathematics)|ranges]]:
:::* &nbsp; <big><math>[a_1,a_2]</math></big> &nbsp; and
:::* &nbsp; <big><math>[b_1,b_2]</math></big>;
:::* &nbsp; then a value &nbsp; <big><math>s</math></big> &nbsp; in range &nbsp; <big><math>[a_1,a_2]</math></big>
:::* &nbsp; is linearly mapped to a value &nbsp; <big><math>t</math></big> &nbsp; in range &nbsp; <big><math>[b_1,b_2]</math>
</big> &nbsp; where:
<br>
:::* &nbsp; <big><big><math>t = b_1 + {(s - a_1)(b_2 - b_1) \over (a_2 - a_1)}</math></big></big>
;Task:
Write a function/subroutine/... that takes two ranges and a real number, and returns the mapping of the real number from the first to the second range.
Use this function to map values from the range &nbsp; <big><code> [0, 10] </code></big> &nbsp; to the range &nbsp; <big><code> [-1, 0]. </code></big>
;Extra credit:
Show additional idiomatic ways of performing the mapping, using tools available to the language.
<br><br>