Как все знают , добавление inator-3000
в конце любого существительного делает его круче. Но что еще может сделать слово круче?
Задав строку ASCII в качестве входных данных, выведите крутость слова.
Расчет крутости
Есть 4 элемента для расчета крутости слова.
- Само слово. Базовая оценка - это количество заглавных букв, умноженное на 1000
- Конечный номер. Число в конце слова (например, burninator- 3000 ) добавляется к базовому баллу, но если число больше 4 цифр, они слишком жадные и их следует игнорировать.
- Разъем. Пробел перед конечным числом добавляет 1000, а дефис добавляет 2000, любой другой символ или вообще никакой символ не имеет никакого эффекта.
- Суффикс Если слово заканчивается
ator
, удвойте окончательный счет. Если это заканчиваетсяinator
, утроите счет. Это без учета регистра.
Так, например, Burninator-3000
можно рассчитать следующим образом:
1 Capital letter - Base Score: 1000
(1000(base) + 3000(number) + 2000(hyphen)) * 3(suffix) = 18000
Testcases
Burninator-3000 -> 18000
Burnator3000 -> 8000
BurNinator 100 -> 9300
BuRnInAtOr-7253 -> 42759
burn -> 0
burn- -> 0
bUrn-1 -> 3001
inator-7 -> 6021
ator 56 -> 2112
burninators 1000 -> 2000
burn_1000 -> 1000
BURNINATOR-9999 -> 65997
burninator 99999 -> 3000
burninator_99999 -> 0
Code Golfinator-3000 -> 21000
inator ator hello world-1000 -> 3000
javaiscool_99999 -> 0
hypen-ated -> 0
1000 -> 1000
-1000 -> 3000
10000 -> 0
-10000 -> 2000
BURN1N470R-3000 -> 11000
счет
Это код-гольф , поэтому выигрывает меньшее количество байтов на каждом языке !
inator ator hello world-1000
(или аналогичный)9028
и-7282
(только цифры)burninator 99999
3000 не 1000? Пространство добавляет 1000 и утраивается для окончания в Inator.Ответы:
JavaScript (ES6),
138133128 байтКак?
Количество заглавных букв определяется как:
Все остальные критерии выводятся из результата следующего регулярного выражения, которое разбивается на 4 переменные:
Контрольные примеры
Показать фрагмент кода
источник
Ваниль C, 447 байтов
(Завернутый для удобства чтения)
... или даже ... пятничное настроение!
(Я не использовал никаких инструментов для наведения кода. На самом деле, мне очень повезло, что я выбрал правильную ширину столбца без каких-либо предварительных вычислений. И он даже компилируется!)
Ваниль С, 789 байт
Оригинальный код:
После 1-й минимизации:
Контрольные примеры
источник
C #,
322317 байтПопробуйте онлайн!
Полная / Отформатированная версия:
Разделение регулярного выражения в его собственном методе теперь на 4 байта длиннее (если я что-то не пропустил) из-за того, что мне разрешена только одна лямбда. Это входит в 321 байт:
источник
b=c=>d=>c.Groups[d].Value
сэкономит ли другая функция, подобная этой ?string m(string s,int n)=>Text.RegularExpressions.Regex.Match(s,"(.*?)([- ])?(\\d+)$").Groups[n].Value.ToLower();string t=m(s,1),c=m(s,2),n=m(s,3);
но я считаю, что тогда делает это на 3 байта больше.Perl, 108 байт
107 байт код + 1 для
-p
.Попробуйте онлайн!
источник
PHP> = 7.1, 165 байт
Testcases
источник