Учитывая следующий вход:
- Целое число
n
гдеn > 0
. - Строка,
s
гдеs
не пусто иs~=[0-9A-Z]+
(только буквенно-цифровые заглавные буквы).
Использование стандартной упрощенной QWERTY-клавиатуры (как показано ниже):
1234567890
QWERTYUIOP
ASDFGHJKL
ZXCVBNM
Выполните следующую операцию:
- Найдите оригинальную строку, в которой находится каждый символ на клавиатуре.
- Замените букву правильным смещенным эквивалентом,
n
исходя из ее исходного положения + n.- EG
s="AB"
иn=2
:A
стал быD
иB
стал быM
.
- EG
- Если
keyboard_row[position + n] > keyboard_row.length
, вернитесь к началу.- EG
s="0P"
иn=2
:0
стал бы2
иP
стал быW
.
- EG
Примеры:
f("0PLM",1) = 1QAZ
f("ZXCVB",2) = CVBNM
f("HELLO",3) = LYDDW
f("0PLM",11) = 1QSV
f("0PLM",2130) = 0PHX
правила
- Это код-гольф , выигрывает наименьшее количество байт.
Это немного сложнее, чем кажется на первый взгляд.
Ответы:
Желе , 13 байт
Попробуйте онлайн!
Как это устроено
источник
Python 2 , 110 байт
Попробуйте онлайн!
При этом используется достаточно большая строка (99 копий каждой строки) и LCM между длинами строк (630), чтобы найти правильную замену, избегая индивидуальной коррекции между каждой строкой.
источник
Java 8,
159158 байт-1 байт благодаря @ OlivierGrégoire, изменяющему массив ввода вместо прямой печати.
Объяснение:
Попробуйте онлайн.
источник
char[]
.Сетчатка , 49 байт
Попробуйте онлайн! Берет ввод
n
иs
по отдельным строкам. Объяснение:Повторите
n
раз.Сдвиньте все символы на одну клавишу вправо.
Удалить
n
.источник
JavaScript (ES6),
10199 байтПринимает ввод в синтаксис карри
(s)(n)
. Работает с массивами символов.Контрольные примеры
Показать фрагмент кода
Как?
Мы ищем позицию p каждого символа ввода в строке S, где чередуются строки клавиатуры: первые 4 символа - «1QAZ» (первый столбец клавиатуры), следующие 4 символа - «2WSX» (второй столбец). клавиатуры) и так далее. Неиспользуемые позиции дополняются подчеркиванием, а последние просто отбрасываются.
Это позволяет нам легко идентифицировать строку с p mod 4 и устраняет необходимость в явных разделителях между строками.
Мы заранее 4n позиции, применить правильный по модулю для этой строки (40, 40, 36 и 28 соответственно) и выбрать символ замены найти на этой новой позиции в S .
источник
Желе , 18 байт
Попробуйте онлайн!
источник
C
152149 байтСпасибо @gastropner за сохранение трех байтов!
Попробуйте онлайн!
раскатали:
источник
for(j=l;j--;)
но я не знаю почему без каких-либо других изменений. Тем не менее, вы должны получить 149.Красный , 152 байта
Попробуйте онлайн!
Ungolfed:
источник
Haskell , 99 байт
Попробуйте онлайн!
источник
s#n= ...
вместоf(s,n)= ...
которого только примерные обозначения, используемые для примеров.Perl 5 , 94 + 1 (
-p
) = 95 байтПопробуйте онлайн!
источник
Japt, 20 байт
Выбегая к обеду, мы будем играть в гольф и объясняться.
Попытайся
источник
Perl,
59585756 байтВключает
+
в себя для-p
Введите ввод в STDIN в виде 2 строк, сначала строку, затем повтор
источник
Perl 5 , 85 байт
Код 84 байта + 1 для
-p
.Попробуйте онлайн!
источник
Чисто ,
144119 байтПопробуйте онлайн!
Лямбда-функция с подписью
Int ![Char] -> [Char]
источник
Рубин , 101 байт
Попробуйте онлайн!
Я, честно говоря, немного разочарован тем, что я не смог добиться большего успеха с «более умными» методами. Самый близкий, который я получил, был в соответствии с
для чистого усиления 7 символов.
источник