Общая переменная прогресса для 3х последовательных полос прогресса

x это текущий общий прогресс

y это максимальный прогресс

z это текущий отдел


x = растет постепенно (к примеру по 10 в секунду)

y = 100 * (количество отделов)

z = нумерация отдела


Возмем на примере 3 отдела каждый по 100% в итоге получаем 300

X растет по 10 а значит каждый отдел будет заполняться по 10 секунд

Не могу сделать функцию которая принимая X Y Z будет возращать прогресс нужного нам отдела...

вот примеры параметров и ответ который должен получиться

x=27 y=300 z=1 Ответ = 27%

x=105 y=300 z=1 Ответ = 100%

x=150 y=300 z=2 Ответ = 50%

x=201 y=300 z=2 Ответ = 100%

x=201 y=300 z=3 Ответ = 1%

Буду очень благодарен Вам за помощь, никак не могу адекватно реализовать функцию хоть понимаю что не особо и сложно...


Ответы (2 шт):

Автор решения: OPTIMUS PRIME

console.log( bubu( 27, 300, 1) ); // 27
console.log( bubu(105, 300, 1) ); // 100
console.log( bubu(150, 300, 2) ); // 50
console.log( bubu(201, 300, 2) ); // 100
console.log( bubu(201, 300, 3) ); // 1

console.log( bubu( 27, 300, 2) ); // 0
console.log( bubu( 200, 300, 2) ); // 100

function bubu(x, y, z) {  
  z *= 100;
  return ( z - 100 < x && x < z ) ? ( x % 100 ) : 100 * ( x >= z )
}

100 * ( x >= z ) :

  • 100 * true → 100 * 1 → 100
  • 100 * false → 100 * 0 → 0
→ Ссылка
Автор решения: Anatoly

Примерно так:

const rawProgress = x - (z - 1) * 100
const progress = rawProgress > 100 ? 100 : rawProgress
→ Ссылка