Code Golf Challenge
У меня есть проблема, мои пальцы толстые, и я часто делаю одну клавишу справа от моего крипборда.
Боюсь, что со временем ситуация ухудшается и ухудшается.
Sopn каждый keystrpke я сделаю с; быть вправо!
Затем я хотел бы, чтобы программа (или functipn) автоматически сдвигала каждое нажатие клавиши обратно влево.
Я обязательно возьму свой том с собой, чтобы не вызвать недоразумения!
Задача:
Напишите программу или функцию, которая принимает на клавиатуре QWERTY одну из следующих зеленых клавиш и возвращает символ клавиши слева от нее.
условия:
• Вы можете предположить, что человек, работающий с этой программой, использует QWERTY-клавиатуру, подобную изображенной выше.
• Ввод и вывод не чувствительны к регистру, вы можете использовать любой случай (или комбинацию комбинаций падежей) для этой задачи, и вы также можете предположить, что все входные данные будут в одном случае, если это необходимо.
• Если ваш язык по какой-либо причине не позволяет пользователю ввести ключ возврата, вы можете игнорировать одно нажатие клавиши для этого.
• Эта задача только для значений по умолчанию клавиш, например, если 4
клавиша нажата, вы можете предположить, что она будет всегда 4
и никогда$
• Вы можете предполагать, что когда-либо будут нажаты только зеленые клавиши.
Пример Input
-> Output
:
S
-> a
4
-> 3
=
-> -
[
->p
Это код-гольф , поэтому выигрывает программа с самым коротким байтом!
]
->[
?Ответы:
Рубин,
76 7169 байтисточник
Perl 6 ,
878369 байтПопробуйте онлайн!
Интересно, есть ли способ закодировать эту жестко запрограммированную строку во что-то более короткое ...
(Украл идею регулярного выражения GB для -14 байт.)
источник
$"
диапазоны, можно было бы сэкономить несколько символовЖеле ,
3433 байтаПопробуйте онлайн!
Как это устроено
источник
Øq
изящная! Мне нравится это, спасибо!Python 3,
8578 байт:источник
lambda x,k="1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?":k[k.find(x)-1]
для сокращения нескольких байтовPython , 76 байт
Попробуйте онлайн!
Создает словарь, который переводит каждую клавишу в одну слева, заархивировав строку символов с ее сдвинутой версией. Нижняя строка - это функция, верхняя - это определение.
Использование
translate
для создания сопоставления дало более продолжительное решение. Попробуйте онлайн!источник
Retina ,
5351 байтПопробуйте онлайн!
Простая транслитерация, смещающая каждый символ на 1 позицию назад. Все от
1
до/
является исходным набором символов, в то время как следующая часть является новым набором, используяo
для обозначения Другой набор.H
иL
представляют собой специальные классы символов для транслитерации в сетчатке (соответственно, сопоставления с шестнадцатеричными цифрами и прописными буквами), но, к счастью, они встречаются на клавиатуре внутри алфавитно-упорядоченных последовательностей (FGH
иJKL
), поэтому мы можем избежать их, помещая их в диапазоны и получая таким образом 2 байта.источник
C ++, 109 байт
Попробуйте онлайн!
источник
TI-Basic, 70 байт
Я сомневаюсь, что он может стать короче этого ...
PS Эти два байта жетоны
Str1
,`
,\
,sub(
, иinString(
.источник
V ,
575451 байт3 байта сэкономлено благодаря @ nmjcman101 за использование
hxVp
вместо того, что было у меня для многострочной клавиатурыПопробуйте онлайн!
<esc>
есть0x1b
и<c-r>
есть0x12
Примечание: это не поддерживает клавишу ввода
Содержит непечатные, так что вот hexdump
объяснение
Большая часть программы генерирует клавиатуру.
i
входит в режим вставки, и каждый следующий за ним символ печатается в буфер. Но здесь есть небольшая причудливость,¬19
вставляющая символы от 1 до 9.Программа выходит из режима вставки в
<esc>
. И тогда здесь/<c-r>a
он ищет аргумент в буфере. Это поместит курсор поверх найденного символа.источник
hylHVGp
вас можно сделать то, что сделал @DJMcMayhem в вопросе о мотоциклеhxVp
. Я не уверен, почему вы положилиG
туда, не все ли в одну строку? ИdhVp
будет работать.G
когда клавиатура была многострочной. Благодарность!PowerShell, 82 байта
Клавиша Enter поддерживается, но не может быть проверена,
Read-Host
поскольку нажатие клавиши ввода без значения ничего не возвращает в PowerShell.источник
Japt ,
5642 байтобъяснение
Попробуйте онлайн!
источник
Java 8, 99 байт
Объяснение:
Попробуй это здесь.
источник
c->"`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./".replaceAll("(?s).*(.)"+c+".*","$1")
.JavaScript (ES6), 74 байта
Поскольку
/
в моей строке нет,indexOf
возвращает-1
, что при увеличении приводит.
к выводу. 93 байта для обработки строки:источник
GNU sed , 72 + 1 (флаг r) = 73 байта
Ключ возврата не может быть протестирован, потому что sed по своему дизайну разделяет ввод, используя
\n
в качестве разделителя, а затем запускает скрипт столько раз, сколько строк.Тестовый прогон: непрерывная пара ввода-вывода (когда закончите нажмите Ctrl + D или Ctrl + C)
источник
05AB1E , 50 байтов
Попробуйте онлайн!
Объяснение:
источник
Pyth - 56 байт
Тестовый пакет .
источник