I called these ranges strict because limit the given numbers. If x is greater or less than the limit, the function will return the limit.
I created these mathematical functions because I think that math is faster that lines of code.
Strict range (Less).
x cannot be less than s
\(l\left(s,x\right)=\min\left(s,x\right)+\left|s-x\right|\)
if x is less than s will be returned s
Strict range (Greater).
x cannot be greater than s
\(g\left(s,x\right)=\max\left(s,x\right)-\left|s-x\right|\)
if x is greater than s will be returned s
Strict range (Greater and less).
x cannot be greater than m
x cannot be less than i
\(lg(m,x, i) = g(m, l(i, x))\)
All in a heap:
\(lg\left(m,x,i\right)=\max\left(m,\min\left(i,x\right)+\left|i-x\right|\right)-\left|m-\min\left(i,x\right)-\left|i-x\right|\right|\)
lg function can be less. Thanks to @heureka (see comments below).
\(lg\left(m,x,i\right)=\min\left(m,\max\left(i,x\right)\right)\)
Look at this in Desmos: https://www.desmos.com/calculator/shusnvnxzo
Strict ranges (number can't be more/less than...)
I assume:
\(\begin{array}{|rcll|} \hline l(s,x) &=& \max(s,x) \\ g(s,x) &=& \min(s,x) \\ \hline lg(m,x,i) &=& g(m, l(i, x)) \\ \mathbf{lg(m,x,i)}&=& \mathbf{ \min(m,\max(i,x)) } \\ \hline \end{array}\)
hint: \(\boxed{\max(s,x) - \min(s,x) = |s-x|}\)
You're right. I did not know that the lg (all in one heap) function could be so small. I didn't know that \(\max\left(a,b\right)-\min\left(a,b\right)=\left|a-b\right|\). Thank you.