Вступ та кредит
Припустимо, що ви бармен. У вашому барі найбільше щасливих людей, але багато хто лише коли-небудь п’є той самий напій і занадто мало для вашого смаку, і ви хочете це змінити. Отже, ви запроваджуєте систему, де ціна напою є різною, залежно від того, скільки вже продано, але ніколи більше або менш дорого, ніж певні пороги. З якоїсь дивної причини ви завжди забуваєте правильно відстежувати всі продані напої та ціни, і, таким чином, вам потрібно придумати короткий (= запам'ятовується!) Фрагмент коду, який відповідає математиці для вас, враховуючи кількість споживаних напоїв.
Цей виклик вже з'явився на середньостроковому іспиті в 2012 році на курсі функціонального програмування в моєму університеті, і я маю на користь свого професора, щоб опублікувати його тут. Нам було запропоновано приклад рішення мовою іспиту.
Вхідні дані
Вашим вкладом буде список рядків, які не містять пробілів - це назви проданих напоїв. Візьміть дані, використовуючи бажаний загальноприйнятий метод введення.
Вихідні дані
Ваш вихід буде єдиним числом - це дохід, який ви отримали сьогодні ввечері. Дайте результат, використовуючи бажаний, загальноприйнятий метод виводу.
Що робити?
Це стосується кожного напою окремо:
- Стартова ціна - 10.
- Щоразу, коли напій купується, його ціна піднімається на 1 для наступного покупця.
- Максимальна ціна - 50. Якщо напій був куплений за 50, нова ціна знову буде 10.
Ваше завдання - знайти загальний дохід, отриманий вхідним списком напоїв з урахуванням вищезазначених правил.
У випадку, якщо вам цікаво: "50 баксів - це чорт дорого дорогий!", Це 50 баксів, тому 50 * 0,1 * одиниця, але я вирішив піти на 10-50, щоб не виключати мови без Арифметика з плаваючою комою
Хто виграє?
Це код-гольф , тому найкоротший код у байтах виграє! Діють стандартні правила.
Потенційні випадки кутових справ
Якщо список вводу порожній, вихід має бути 0.
Вихідний список ican не вважається сортованим за напоєм.
Приклади
[] -> 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