Код 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
  1. Арифметика над branded-числом даёт обычный number: результат снова оберни в kopecks.
  2. Остаток от деления раздай по копейке первым частям.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.