Мне нужно получить унаследованный класс DispenseAlgorithm. Должен реализован алгоритм расчета выдачи доставки. Алгоритм должен обеспечивать равномерное потребление номиналов.
public abstract class DispenseAlgorithm
{
public abstract Dictionary 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 - количество деноминации, необходимое для оплаты.
Желаемый результат: деноминация должно заканчиваться как можно более равномерно на некоторых сеансах выдачи родов
Например: s Улучшенный либеральный шаблон точного регулярного выражения для сопоставления URL-адресов с одним из моих Javascripts, но инспектор WebKit (в Google Chrome 5.0.375.125 для Mac) выдает ошибку синтаксиса регулярного выражения «Недопустимая группа».
Исходное регулярное выражение Грубера выглядит следующим образом:
(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
Строка из моего JavaScript с регулярным выражением выглядит следующим образом (с косой чертой, обратной косой чертой):
tweet_text = tweet_text.replace(/(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi, '$1');
А ошибка Google Chrome (V8?) Выглядит следующим образом:
Uncaught SyntaxError: Invalid regular expression: /(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/: Invalid group
И ошибка Safari заключается в следующем:
SyntaxError: Invalid regular expression: unrecognized character after (?
Он утверждает, что он должен работать в современных интерпретаторах регулярных выражений JavaScript, что, как я полагаю, будет в WebKit & V8. Разве синтаксис регулярных выражений JavaScript не поддерживает (?:
(черт возьми, Google не индексирует пунктуацию! ) синтаксис группировки? Я просто что-то пропустил?
Ага, это был модификатор режима (т.е. (? I)
) в начале регулярного выражения!
Я просмотрел данные Regular-Expressions.info о «Вкус регулярных выражений JavaScript» , в частности, список того, что не поддерживается, и был «модификатор режима», который Я уже указывал после закрывающей косой черты регулярного выражения. Вырвал все вроде хорошо.
Итак, мое регулярное выражение JavaScript теперь выглядит следующим образом:
/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi