Adds a "range" function
This commit is contained in:
parent
e55993527e
commit
43ef31e772
|
@ -1,3 +1,5 @@
|
|||
exception RangeWrong(string);
|
||||
|
||||
let interpolate =
|
||||
(xMin: float, xMax: float, yMin: float, yMax: float, xIntended: float)
|
||||
: float => {
|
||||
|
@ -7,10 +9,22 @@ let interpolate =
|
|||
};
|
||||
|
||||
// @todo: To test!
|
||||
/* https://bucklescript.github.io/bucklescript/api/Belt.html */
|
||||
let sum = Belt.Array.reduce(_, 0., (i, j) => i +. j);
|
||||
let mean = a => sum(a) /. (Array.length(a) |> float_of_int);
|
||||
let min = Belt.Array.reduce(_, 0., (i, j) => i < j ? i : j);
|
||||
let max = Belt.Array.reduce(_, 0., (i, j) => i > j ? i : j);
|
||||
let up = (a, b) => Array.make(b - a, a) |> Array.mapi((i, c) => c + i);
|
||||
let down = (a, b) => Array.make(a - b, a) |> Array.mapi((i, c) => c - i);
|
||||
let range = (min: float, max: float, n: int): array(float) => {
|
||||
switch (n) {
|
||||
| 0 => [||]
|
||||
| 1 => [|min|]
|
||||
| 2 => [|min, max|]
|
||||
| _ when min == max => Belt.Array.make(n, min)
|
||||
| _ when n < 0 => raise(RangeWrong("n is less then zero"))
|
||||
| _ when min > max => raise(RangeWrong("Min values is less then max"))
|
||||
| _ =>
|
||||
let diff = max -. min;
|
||||
Belt.Array.makeBy(n, i => float_of_int(i) *. diff);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -14,6 +14,7 @@ function interpolate(xMin, xMax, yMin, yMax, xIntended) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Done
|
||||
* This should return an array of n evenly-spaced items
|
||||
* between min and max, including min and max.
|
||||
* range(1,5,3) = [1, 3, 5];
|
||||
|
|
Loading…
Reference in New Issue
Block a user