Существует очень простой шифр, который заменяет букву ее положением в алфавите. Например, abc
стал бы 1 2 3
в этом шифре.
Этот вызов - альтернативный подход к этому шифру.
Соревнование
Создайте программу, которая принимает ввод символов ASCII и выводит разделенную пробелами строку:
целые числа
-26
через26
письма
a
черезj
Вывод должен прийти через STDOUT или ближайшую альтернативу вашего языка.
Характеристики
Заглавные буквы должны быть отменены. Столица
D
, например , будет-4
, в то время как в нижнем регистреd
будет4
.Цифры должны быть заменены на их альфа-аналоги.
1
бытиеa
и тд. Любые нули на входе будутj
.Все не алфавитно-цифровые символы (кроме пробелов) следует игнорировать.
Пространства есть
0
.Соседние пробелы в выводе должны быть сведены к одному пробелу.
Input: You + Me Correct Output: -25 15 21 0 -13 5 Incorrect Output: -25 15 21 0 0 0 -13 5
Допускается один пробел или символ новой строки.
Примеры
Input: programming puzzles
Output: 16 18 15 7 18 1 13 13 9 14 7 0 16 21 26 26 12 5 19
Input: Code Golf
Output: -3 15 4 5 0 -7 15 12 6
Input: Programming Puzzles & Code Golf
Output: -16 18 15 7 18 1 13 13 9 14 7 0 -16 21 26 26 12 5 19 0 -3 15 4 5 0 -7 15 12 6
Input: C0d3 G0lf
Output: -3 j 4 c 0 -7 j 12 6
Input: abc_ABC
Output: 1 2 3 -1 -2 -3
Табло
Чтобы ваш счет появился на доске, он должен быть в следующем формате:
# Language, Bytes
Зачеркивание не должно вызывать проблем.
источник
Ответы:
CJam,
585754515049 байтовКак раз когда я написал объяснение, я заметил, что одна из альтернативных 50-байтовых версий может быть сокращена на байт ...
Проверьте это здесь.
50-байтовые решения:
объяснение
Это должно быть впервые, когда поведение CJam по модулю для отрицательных значений было полезно для меня.
источник
JavaScript (ES6),
110107133120 байтВозьми это, старый я!
Потенциально гораздо больше места для игры в гольф,
особенно в регулярных выражениях,нет. Безголовая версия:Предложения приветствуются!
источник
All non-alphanumeric characters should be ignored.
. Тест: «A $ b» должно быть-1 2
Pyth,
5049 байтовПопробуйте это здесь .
Редактировать: реструктурированная санация строк для обеспечения правильной обработки подчеркивания. Это даже спасло байт, да!
Эта программа создает строку поиска, которая используется для очистки входных данных. Затем он сопоставляется с соответствующим индексом в этой строке. Наконец, любой индекс больше 26 преобразуется в правильный символ ASCII.
Предыдущая версия, в которой использовалось
\W
регулярное выражение, размером 50 байт:источник
Юлия,
145136 байтUngolfed:
Чтобы получить цифры в виде букв, мы добавляем 58 к значению ASCII и вычитаем 10, если текущий символ не равен 0. Это гарантирует, что 0 отображается на,
j
а остальные цифры отображаются наa
-i
.Отрицание заглавных букв делается с помощью
cmp
. Это вернет -1 для заглавных букв и 1 для строчных.Попробуйте онлайн
источник
Perl 5,
120116113105 байтСначала убирает ненужных персонажей и лишние пробелы.
Затем спускается по таблице ascii для каждого персонажа.
Тестовое задание
источник
s/ +/ /g
, первое регулярное выражение неверно, потому что \ w соответствует символу подчеркиванияs/[^\w ]|_//g
С,
142138135Немного разгулялся:
Проходит данные тесты в GCC 4.9.3 и Clang 3.5.2.
источник
> <> (рыба),
219209 байтПопробуйте это здесь
Это мой первый кодовый ответ на гольф! Наконец-то я смог использовать язык, который хотел использовать для задания кода в гольф, и это выглядело как идеальный вариант, если учесть, что символы автоматически преобразуются в десятичные.
Я ожидал, что мой результат будет намного короче, но, видимо, нет. Хотя я не слишком много играл в гольф. Есть несколько мест, где код может быть чище / более понятным, но не будет сохранять байты, так как они находятся в местах, где пробел необходим в любом случае. Возможно, есть способ сохранить несколько байтов на последнем бите во второй строке, заставить его идти в противоположном направлении и смешивать с уже имеющимися 00, мне придется поиграть с этим позже.
По сути, это проверяет, является ли текущий символ пробелом, цифрой, заглавной или строчной буквой, проверяя, находится ли он в диапазоне самых высоких / самых низких значений этой группы. Если это не что-то из этого, оно отбрасывается. Если он находится в одном из них, он преобразуется в число, если это буква, и буква, если это число (или, скорее, число от 97 до 106, которые являются значениями для букв aj). Затем он проверяет, является ли верхнее значение меньше 28, и в этом случае это число, и выводит число, в противном случае это буква и выводит букву, которую представляет число, выводит пробел, а затем зацикливается, пока стек не станет пустым.
источник
JavaScript (ES6), 108
122 124Редактировать Используя регулярное выражение из комментария @ Макса
Edit2 14 байтов сохранено благодаря ETHProductions
EcmaScript 6 только для функций со стрелками, поэтому он должен работать в Firefox и последней версии Chrome.
Тест бегущего фрагмента ниже
источник
[R](/ +/g,' ')[R](/./g,
на[R](/ +|./g,
. (Извините, что поднял старый пост, кстати)Pyth, 57 байт
Живая демоверсия и тестовые случаи.
источник
CJam, 52 байта
Попробуйте онлайн
Ключевой частью решения является то, что оно использует
er
оператор CJam (транслитерации). В качестве аргументов оператора ему необходим список всех символов и список соответствующих значений.В качестве шага предварительной обработки ввода он удаляет символы, которые не являются частью таблицы перевода (специальные символы), и уменьшает количество повторяющихся пробелов до одного пробела.
Объяснение:
источник
Python 2,
191179177173172168160 байтТестовое задание
источник
PHP, 116 байт
принимает данные от STDIN; бежать с
-nR
.сломать
Вы можете заменить
@
знак обратной чертой для обработки пробелов в строчной части.Сjabcdefghi0
помощью цифр вы также можете использовать:
.источник
"#_|[^\w ]#"
вместо"#[^\w ]|_#"
.Калий , 1156 байт
Очень длинный ответ
источник
You + Me
производит вывод-25 15 21 0 0 -13 5
.Dec
колонку.)Желе , 32 байта, языковые проблемы
Попробуйте онлайн!
объяснение
Вспомогательная функция
1Ŀ
(переводит каждый буквенно-цифровой / пробел на входе в число)Вспомогательная функция
2£
(возвращает постоянную строку“jabcdefghi”
)Основная программа
источник
Сетчатка,
7470 байт (не конкурирует)Обратите внимание на начальный пробел в строке 3, завершающий пробел в строке 6 и пустую вторую строку.
Попробуйте онлайн!
Несмотря на то, что язык был создан до проведения конкурса, я думаю, что некоторые языковые функции, которые я использовал, возникли после конкурса, поэтому я отметил его как неконкурентный.
источник
Java 7,
257254 байтаПопробуй это здесь.
Объяснение:
Пример ввода и вывода:
источник