Exercise 4: Clamp Number in Range (min/max)
Problem Statement
Create a function `clamp(n, min, max)` that fixes a number within a range.
Example:
- clamp(120, 0, 100) → 100
- clamp(-5, 0, 100) → 0
Sample Output:
clamp(120, 0, 100) => 100 clamp(-5, 0, 100) => 0 clamp(50, 0, 100) => 50
Solution
const clamp = (n, min, max) => Math.min(max, Math.max(min, n));Explanation
Overall Goal:
- Ek number ko minimum aur maximum range ke andar limit karna.
- Agar number range se bahar hai to nearest boundary value return karna.
Single Line Solution:
const clamp = (n, min, max) => Math.min(max, Math.max(min, n));
Step-by-step breakdown:
Math.max(min, n)→ pehle lower bound check:- Agar
nminse chhota hai (e.g., n=-5, min=0) →Math.max(0, -5)=0(minimum value). - Agar
nminse bada hai (e.g., n=50, min=0) →Math.max(0, 50)=50(n hi return). Math.min(max, ...)→ phir upper bound check:- Agar previous result
maxse bada hai (e.g., 120, max=100) →Math.min(100, 120)=100(maximum value). - Agar previous result
maxse chhota hai (e.g., 50, max=100) →Math.min(100, 50)=50(same hi return).
Examples:
clamp(120, 0, 100)→Math.min(100, Math.max(0, 120))→Math.min(100, 120)→100.clamp(-5, 0, 100)→Math.min(100, Math.max(0, -5))→Math.min(100, 0)→0.clamp(50, 0, 100)→Math.min(100, Math.max(0, 50))→Math.min(100, 50)→50.
Real world:
- Progress bars: percentage 0-100 ke beech hi rahe.
- Rating systems: stars 1-5 ke beech hi rahe.
- Slider inputs: value min-max range me hi rahe.
- Discount limits: discount 0-100% ke beech hi rahe.