Код Middle Базовые типы обновлено
Деньги в копейках: branded type и делёж счёта
Условие
Деньги храним целыми копейками. Чтобы не перепутать копейки с рублями и обычными числами, используется branded type Kopecks (дан в заготовке вместе с конструктором kopecks).
Напиши splitBill(total: Kopecks, parts: number): Kopecks[]: делит сумму на parts частей так, чтобы сумма частей точно равнялась total, а части отличались не больше чем на 1 копейку (лишние копейки достаются первым). parts целое больше 0, иначе Error('bad parts').
demo(rub, parts) переводит рубли (до 2 знаков) в копейки и делит.
Примеры
demo(100, 3) // [3334, 3333, 3333]
demo(0.1, 3) // [4, 3, 3]
demo(0.3, 3) // [10, 10, 10]
Как подойти
Подсказки: 2
- Арифметика над branded-числом даёт обычный
number: результат снова оберни вkopecks. - Остаток от деления раздай по копейке первым частям.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Справочник валют через satisfies и суммы по валютам
Следующий вопрос
as const на вложенном массиве