Пару месяцев назад у нас была дискуссия о мета- росте репутации, которая присуждается за положительные отзывы по вопросам. Вот основы нашей нынешней системы репутации для голосов: 1
- Вопрос upvote
U
стоит 5 репутации. - Ответ upvote
u
стоит 10 репутации. - Понижение вопроса или ответа
d
стоит -2 репутации.
Было много разных предложений для новой системы, но в настоящее время наиболее популярным является то же самое, что и выше, но с ростом голосов до +10. Задача состоит в том, чтобы рассчитать, сколько еще репов вы заработаете, если эта система будет введена в действие.
Давайте посмотрим на пример. Если бы голосование было таким UUUUuuuuUUUUUduuudUU
, то вы бы заработали 121 по текущей системе:
U x 4 x 5 = 20 = 20
u x 4 x 10 = 40 = 60
U x 5 x 5 = 25 = 85
d x 1 x -2 = -2 = 83
u x 3 x 10 = 30 = 113
d x 1 x -2 = -2 = 111
U x 2 x 5 = 10 = 121
Total: 121
Но та же самая деятельность заработала бы 176 в новой системе:
U x 4 x 10 = 40 = 40
u x 4 x 10 = 40 = 80
U x 5 x 10 = 50 = 130
d x 1 x -2 = -2 = 128
u x 3 x 10 = 30 = 158
d x 1 x -2 = -2 = 156
U x 2 x 10 = 20 = 176
Total: 176
По этому сценарию вы получите 55 повторений .
Пока что вычисление измененного представителя не так сложно; просто посчитайте число U
s и умножьте на 5. К счастью, система повторений не так проста: есть также предел повторений , который является самой высокой репутацией, которую вы можете заработать на голосах за один день UTC. Это установлено на 200 на всех сайтах.
Кроме того, ограничение на количество повторений применяется в режиме реального времени: если вы уже заработали 196 повторений и получили ответный ответ, теперь у вас будет 200 повторений. Если сразу после этого вы получите отрицательное значение, 2 повторения будут вычтены из 200, поэтому у вас будет 198 повторений.
В результате голосования UUUuuuuUUUUuuuuUUUUUUUd
вы наберете 148 представителей в текущей системе:
U x 3 x 5 = 15 = 15
u x 4 x 10 = 40 = 55
U x 4 x 5 = 20 = 75
u x 4 x 10 = 40 = 115
U x 7 x 5 = 35 = 150
d x 1 x -2 = -2 = 148
Total: 148
Но вы заработаете 198 по новой системе:
U x 3 x 10 = 30 = 30
u x 4 x 10 = 40 = 70
U x 4 x 10 = 40 = 110
u x 4 x 10 = 40 = 150
U x 7 x 10 = 70 = 200 (rep capped)
d x 1 x -2 = -2 = 198
Total: 198
Таким образом, увеличение составляет 50 респ .
Вызов
Ваша задача - написать программу или функцию, которая принимает многострочную строку и выводит общее количество повторений, которое будет получено с помощью вышеуказанного алгоритма. Каждая строка считается как 1 день UTC, поэтому ограничение на количество повторений применяется только один раз для каждой строки.
Контрольные примеры
(Одна или несколько строк ввода, за которыми следует выходное целое число.)
UUUuudd
15
UUUuUUUUuUuuUUUUudUUUUuU
57
UUUuUUUUuUuuUUUUudUUUUuU
UUUuudd
72
uuuuuuu
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
uuuuuuuuuuuuuuuuuuuu
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
0
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
5
(empty string)
0
UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU
4
UUUuuuuuUUUuuUUUUUUuuuUUUuuUUUUuuuuUUUdddddddUU
UuuUUUudUU
UUUUUUUUUuuuuuuUUUUUUuuUUUUUUuuuuuUUUUUUUUuUUUuuuuUUUUuuuUUUuuuuuuUUUUUUUUuuUUUuuUU
UUu
U
d
UU
UUUUUUUUUUUU
119
Это код гольф, поэтому выигрывает самый короткий код в байтах.
Задачи, связанные с данной : Рассчитайте ограниченную совокупную сумму вектора , Рассчитайте свою репутацию обмена стека
1 Это очень упрощенная версия системы. Вы также теряете 1 повторение за отказ от ответа, и существуют отклонения, которые являются странными и следуют собственным правилам ; и отказов голосов, которые даже не имеют правил для подражания .
источник
Ответы:
Perl
10491 + 2 = 93 байтаТребуется
-p
флаг:Сломать:
источник
ES6, 104 байта
Вычисляет количество повторений до и после каждой строки. Мое первое использование
eval
!источник
Haskell,
9893 байтаБлагодаря BlackCap, чтобы гольф это дальше. Теперь я думаю попробовать лямбду в более поздних испытаниях, сейчас.
Первые 3 строки - это оценка, a & b - оценка, f - разница, а g - функция, удовлетворяющая спецификации.
Использование:
источник
Луа, 196 байт
Эта программа принимает в качестве входных данных один многострочный аргумент и выводит общую разницу в rep '
Я предположил, что мне разрешено просить новую строку в конце ввода, если нет, вот решение на 204 байта, которое ему не нужно.
Неуправляемый и объяснения
источник