похоже большинство разработчиков алгоритмы презирают. Считают что это не нужно знать вообще и очень ненавидят алгоритмические интервью в ФААНГах и им подражающим.
q = true ? true : false;
let q: boolean;
q = true;
interface A {
a?: typeof q // по идее же должен тип boolean задаться переменной
}
const a: A = {a: true} // все ок
const b: A = {a: false} // ошибка
Object.getOwnPropertyDescriptor(Sounds.prototype, 'say')
configurable: true
enumerable: false
value: ƒ say()
writable: true
сначала надо посчитать требуемые пропорции, для твоего примера: p1 = 1/4, p2 = 1/4, p3 = 1/2 (то есть каждое число делим на сумму чисел).
когда заказов ещё нет, передаешь первый заказ первой службе.
потом на каждом шаге у тебя количества заказов по службам: s1, s2, s3, а всего заказов s.
смотри значения (s1/s - p1), (s2/s - p2), (s3/s - p3), какое из них минимальное, туда и отправляй.
либо минимум из значений (s1/(s*p1)), (s2/(s*p2), (s3/(s*p3)) - навскидку не очень понятно, какой вариант правильнее.
этот способ легко обобщается на любое количество служб.