func map_range(a, b, x) { var (a1, a2, b1, b2) = (a.bounds, b.bounds) x-a1 * b2-b1 / a2-a1 + b1}var a =0..10var b =-1..0a.each { |x| say "#{x} maps to #{map_range(a, b, x)}"}
Output:
0 maps to -1
1 maps to -0.9
2 maps to -0.8
3 maps to -0.7
4 maps to -0.6
5 maps to -0.5
6 maps to -0.4
7 maps to -0.3
8 maps to -0.2
9 maps to -0.1
10 maps to 0