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 n min se chhota hai (e.g., n=-5, min=0) → Math.max(0, -5) = 0 (minimum value).
  • Agar n min se 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 max se bada hai (e.g., 120, max=100) → Math.min(100, 120) = 100 (maximum value).
  • Agar previous result max se 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.