Введение и кредит
Предположим, вы бармен. Чаще всего в вашем баре много счастливых людей, но многие пьют только один и тот же напиток, и слишком мало на ваш вкус, и вы хотите это изменить. Таким образом, вы вводите систему, в которой цена напитка является переменной, в зависимости от того, сколько уже продано, но никогда не более или менее дорого, чем определенные пороги. По какой-то странной причине вы всегда забываете правильно следить за всеми проданными напитками и ценами, и поэтому вам нужно подумать о коротком (= запоминающемся!) Коде, который подсчитывает для вас, учитывая количество выпитых напитков.
Эта проблема уже появилась на промежуточном экзамене в 2012 году на курсе по функциональному программированию в моем университете, и у моего профессора все в порядке, чтобы опубликовать его здесь. Нам предоставили пример решения на языке экзамена.
вход
Ваш ввод будет список строк, которые не содержат пробелов - это названия проданных напитков. Возьмите ввод, используя ваш предпочтительный, общепринятый метод ввода.
Выход
Ваш вывод будет одним числом - это доход, который вы получили этим вечером. Дайте вывод, используя предпочитаемый, общепринятый метод вывода.
Что делать?
Это относится к каждому напитку в отдельности:
- Начальная цена 10.
- Каждый раз, когда напиток покупается, его цена увеличивается на 1 для следующего покупателя.
- Максимальная цена 50. Если напиток был куплен за 50, новая цена снова будет 10.
Ваша задача - найти общий доход, сгенерированный входным списком напитков с учетом приведенных выше правил.
Если вам интересно: «50 баксов - это чертовски дорого для напитка!», Это 50 баксов на деци, то есть 50 * 0,1 * за единицу, но я выбрал 10-50, чтобы не исключать языки без арифметика с плавающей точкой.
Кто выигрывает?
Это код-гольф , поэтому выигрывает самый короткий код в байтах! Стандартные правила применяются.
Потенциальные Угловые Случаи
Если входной список пуст, выходное значение должно быть 0.
Предполагается, что входной список не отсортирован по напиткам.
Примеры
[] -> 0
["A"] -> 10
["A","B"] -> 20
["A","A","B"] -> 31
["A","B","A"] -> 31
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"] -> 1240
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","C","C","D"] -> 1304
["D","A","A","C","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","C"] -> 1304
["A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","C","C","D","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"] -> 1304