Вступление
В стране [Вставьте классное имя здесь] люди не покупают вещи за деньги, потому что у всех сильная аллергия на бумагу. Они платят друг другу словами! Но как это? Ну, они дают каждой букве числовые значения:
a=1,b=2,c=3,etc.
(С некоторыми другими специальными правилами, которые будут описаны позже)
В этом задании вашей задачей будет подсчитать стоимость предложений.
Вызов
Вы возьмете вход, который будет предложением. Вы можете предположить, что на входе нет новых строк или завершающих пробелов. Задача будет состоять в том, чтобы рассчитать стоимость предложения, используя следующие правила:
a=1,b=2,c=3,etc.
- Заглавная буква стоит в 1,5 раза больше соответствующей строчной буквы
H=h*1.5
Итак, слово
cab
Будет стоить c+a+b = 3+1+2 = 6
Но слово Cab
с заглавной буквы c будет стоить. (c*1.5)+a+b = 4.5+1+2 = 7.5
Так что если в качестве входных данных для вашей программы было «Cab», ваша программа выдает 7,5.
- Все не алфавитные символы стоят 1.
Это код гольфа, поэтому выигрывает кратчайший ответ в байтах. Удачи!
7.0
вместо7
?Ответы:
Python 3,
716561 байтПо неординарному стечению обстоятельств,
(ord(s)-64)*1.5
равняетсяord(s)*1.5-96
, поэтому писать нам нужно только-96
один раз. Все остальное довольно просто.Редактировать: сбрил некоторые байты, используя возведения в степень.
источник
Python 2,
120102 байтаРедактировать:
Первая подача, не такая уж гольфистская, но надо с чего-то начинать.
источник
for
в понимании.e
в качестве параметра, возвращающего результат.Pyth,
2320 байтЖивая демоверсия и тестовые случаи.
объяснение
Здесь достаточно творческого использования логических значений в качестве целых чисел.
23-байтовая версия:
Живая демоверсия и тестовые случаи.
источник
.
(все не алфавитные символы должны стоить 1.)Юлия, 63 байта
Это просто суммирует массив, построенный через понимание, которое перебирает символы во входной строке и выполняет арифметику для их кодовых точек.
Ungolfed:
Спасибо Glen O за исправление подхода.
источник
Stuck ,
8543 байтаДа, да, я знаю, Python короче ..: PЯ использую ту же логику, что и Триф сейчас, по большей части.Объяснение:
источник
Python 2, 101 байт
источник
CJam, 30 байтов
Как это работает (вау, я никогда не делал один из них!):
источник
F #, 168 байт
Пока еще не игра в гольф, но начало:
Вот более читаемая версия:
источник
К, 30
,
Как это устроено:
.Q`a`A
генерирует два списка строчных и прописных букв!:1+til 26
сопоставляет каждую букву в каждом списке от 1 до 26Умножьте первый список на 1, последний на 1,5
Raze в один словарь, используя
,/
Сопоставить символы во входной строке с соответствующими показателями
Заполните все нулевые значения 1
сумма
источник
JavaScript, 121 байт
вызвать файл js с узлом (узел index.js "Кабина")
источник
MATLAB, 68 байт
Это использует тот факт, что символы автоматически приводятся к целым числам, а логические значения могут суммироваться как целые числа.
источник
Perl 5, 77 байт
Проверено на
v5.20.2
.источник
Javascript (ES6),
85828067 байтЯ люблю быстрые и простые задачи, как это. :)
Это работает путем интерпретации каждого символа как числа base-36, умножения его на 1 или 1,5, если он больше 9 (
a-z
илиA-Z
), и вместо этого дает 1, если нет. Как всегда, предложения приветствуются!источник
toString(36)
.toString(36)
применимо здесь. Вы имеете в виду что-то подобноеparseInt(c,36)
? На самом деле, это может быть короче ...([c,...t])=>c?(parseInt(c,36)-9||2/3)*(c>'Z'||1.5)+f(t):0
Python 3:
8685 байтисточник
C # 81 байт
Позвонить с (LinqPad):
источник
PHP, 102 байта
Пример использования:
Ничего особенного в алгоритме. Каждый символ из аргумента первой программы (
$argv[1]
) проверяется,A
аZ
затемa
иz
и подсчитывается соответственно.источник
PowerShell, 108 байт
Прилично конкурентоспособный, я немного удивлен. Не слишком потрепанный из-за отсутствия компактного тернарного оператора.
Код:
Разъяснение:
источник
C 85 байт
!!
До тогоislower
иisupper
нужны, так как логические значения , возвращаемые этими функциями, не гарантируется0
и1
, истинное значение было1024
на моей системе на самом деле!источник
Candy ,
2622 байта(~ "А" <{A # 64-2 / 3 * | A # 96-} ч) ZСпасибо @Tryth за трюк факторизации!
Вызов с флагом -I, как в
candy -I "Cab" -e $prg
Код в его длинной форме:
источник
Пролог (SWI), 101 байт
Код:
Разъяснение:
Пример:
источник
PHP, 75 байт
Запустите как трубу с
-nr
или попробуйте онлайн .источник