Мне нужно получить унаследованный класс DispenseAlgorithm. Должен реализован алгоритм расчета выдачи доставки. Алгоритм должен обеспечивать равномерное потребление номиналов.
public abstract class DispenseAlgorithm
{
public abstract Dictionary<int, int> CalculateDispense(CassetteData[] data, int summ);
}
public class CassetteData
{
public int UID { get; set; }
public int Nominal { get; set; }
public int Count { get; set; }
public CassetteData() { }
}
Класс CassetteData - предоставляет информацию о наборе достоинства в текущее время (Nominal - значение номинала, Count - количество наименования, UID - уникальный идентификатор набора наименования).
Метод CalculateDispense имеет 2 параметра:
- доступно в текущем наборе деноминации времени (данные CassetteData {])
- сумма, которую мы выплачиваем (или выдаем) как кешбэк.
Метод CalculateDispense должен возвращать объект Dictionary, где key - уникальный идентификатор набора номиналов, а value - количество номиналов, необходимое для оплаты.
Желаемый результат: деноминация должна заканчиваться как можно более равномерно на некоторых сеансах выдачи поставки
Например:
У нас есть наборы номиналов:
1 10 $ 100 denomination
2 50 $ 100 denomination
3 100 $ 100 denomination
Нам нужно выплатить 800 $
Хороший результат:
1 5 items
2 5 items
3 5 items
Потому что 800 = 10 * 5 + 50 * 5 + 100 * 5
Плохой результат:
1 0 items
2 0 items
3 8 items
Потому что 800 = 10 * 0 + 50 * 0 + 100 * 8
Номинал означает деньги, купюру, купюру, банкноту, облигацию
выдача поставки означает выдачу кешбека
Номинал - номинал, номинал, номинал, номинал, рейтинг