Соревнование:
Учитывая любой ввод, который можно набрать на клавиатуре, переместите текст вдоль N символов.
Вот QWERTY клавиатура, которая будет использоваться. Вы можете игнорировать клавиши-модификаторы (Shift, Caps, Enter, Delete и Tab). Как только вы дойдете до одной стороны (например |
), вернитесь назад, чтобы |
перейти к Q
if N = 1
.
Пробелы не нужно перемещать (они возвращаются в пространство, когда вы пропускаете модификаторы). Если для ввода символа использовался сдвиг ( например, !
и @
), то измененный символ также должен быть набран с использованием сдвига (т. Е. !
Переходит @
не, 2
если N = 1
).
Британские клавиатуры отличаются от этого, но, пожалуйста, используйте это, чтобы мы могли сравнить.
Входные данные:
Любое предложение, которое может быть напечатано на клавиатуре выше, сопровождается положительным целым числом. Максимального размера этого целого числа не существует.
Выход:
То же предложение, сдвинутое на N.
Примеры:
My name is Tim 3
?o .f/y [g I[/
Hello World 7
Spgge Oe[g;
I Wi5h I h4d b3773r C@d3ing ski{{s 3
{ T[8l { l7h ,6006u N%h6[.k g'[QQg
Это код гольф, поэтому выигрывает самый короткий код.
N<= 13
вам потребуется смещение максимум 13, чтобы вернуться к исходному персонажу?Hello World 7
примерSpgge Oe[g;
? Ониo
должны отображаться на одного и того же персонажаОтветы:
C 217 байтов
Читаемая версия с пробелами, включает и т.д .:
Код в значительной степени говорит сам за себя. Просто таблица поиска, которая отображается от каждого символа к следующему символу, который применяется указанное количество раз. Большая часть кода на самом деле для анализа числа из ввода.
источник
05AB1E , 61 байт
-1 байт благодаря Кевину Круйссену
Попробуйте онлайн!
источник
Pyth, 126 байтов
Попробуйте онлайн: демонстрация или тестовый набор
Объяснение:
источник
Python 3, 311 байт
источник
" " for c in " "
Python 3,
271255 байтБазовая линия, почти не разглаженная, использовалась для создания сдвинутых слов в вопросе.
Объяснение:
источник
JavaScript (ES6), 200
216Используя строки шаблона, новые строки значимы и подсчитываются.
Обратите внимание на
replace
: два фрагментаstring.split('x').map(w=>...)
иstring.replace(/[^x]+/g,w=>...)
одинаково допустимые способы выполнения функции для каждой части в строке, используя разделитель. Использование новой строки в качестве разделителя удобно при замене регулярного выражения/.+/g
, поскольку точка соответствует любой не новой строке. И используя шаблонные строки, переводы строки не требуют дополнительных затрат.источник
CJam, 107 байт
Попробуйте онлайн в интерпретаторе CJam .
Как это устроено
источник
Желе , 67 байт
Попробуйте онлайн!
Диадическая ссылка, принимающая строку в качестве левого аргумента, и число мест, которые необходимо сместить в качестве правого аргумента.
источник
Python 2 , 194 байта
Попробуйте онлайн!
источник